Перейти к содержанию
Fire Monkey от А до Я
  • 0

Числовая клавиатура в InputQuery


Rusland

Вопрос

Мне нужно вводить числа.

В Edit можно указать тип клавиатуры KeyboardType = PhonePad. 
 
Как сделать появляющуюся при InputQuery клавиатуру типа PhonePad?

procedure TForm1.Label1Tap(Sender: TObject; const [Ref] Point: TPointF);
begin
  InputQuery('Введите число', [''], [''],
    procedure(const AResult: TModalResult; const AValues: array of string)
    begin
      if (AResult=mrOk) and (AValues[0].Trim<>'') then
        Label1.Text:=AValues[0].Trim;
    end
  ); 
end;
Изменено пользователем Rusland
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Основная проблема, что я решал - приподнять окно над клавиатурой

Ну и некая анимация

пример использования

procedure TUserProfile.InputPassOKHandler(Sender:TObject);
var
  t: string;
  d:TMyInputQuery;
begin
  d := Sender as TMyInputQuery;
  t:=apiObject.token;
  apiObject.OpenSessionPass(.........);
  if (ApiObject.lastError.code<>ERR_NO_ERROR)and(ApiObject.lastError.code<>ERR_SESSION_ALREADY_OPEN) then
  begin
    apiObject.token := t;
    ShowMessage('Неверный пароль');
    exit;
  end;

  PersData[dfPassword] := d.Values[0];
  SavePersData;
  reloadPersData;
  init;
end;


procedure TUserProfile.UpdateExistingUser;
var d:TMyInputQuery;
begin
  if PersData[dfPassword]='' then
  begin
    d:=TMyInputQuery.Create(['Для изменения данных введите пароль'],[''],self, InputPassOKHandler);
    try
      // тут можно все что угодно делать с Edit'ами на форме перед показом
      d.ShowModal(procedure (AResult:TModalResult) begin end );
    finally
      freeandNil(d);
    end;
  end
  else
  begin
    SavePersData;
    reloadPersData;
    init;
  end;
end;

MyDialogs.7z

Ссылка на комментарий
  • 0

Отдельная форма - это конечно тоже вариант, но в данном случае хотелось бы использовать стандартный вариант. 

Знать бы только как заменить клавиатуру )

Ссылка на комментарий
  • 0
  • Модераторы

 

Основная проблема, что я решал - приподнять окно над клавиатурой

Ну и некая анимация

пример использования

procedure TUserProfile.InputPassOKHandler(Sender:TObject);
var
  t: string;
  d:TMyInputQuery;
begin
  d := Sender as TMyInputQuery;
  t:=apiObject.token;
  apiObject.OpenSessionPass(.........);
  if (ApiObject.lastError.code<>ERR_NO_ERROR)and(ApiObject.lastError.code<>ERR_SESSION_ALREADY_OPEN) then
  begin
    apiObject.token := t;
    ShowMessage('Неверный пароль');
    exit;
  end;

  PersData[dfPassword] := d.Values[0];
  SavePersData;
  reloadPersData;
  init;
end;


procedure TUserProfile.UpdateExistingUser;
var d:TMyInputQuery;
begin
  if PersData[dfPassword]='' then
  begin
    d:=TMyInputQuery.Create(['Для изменения данных введите пароль'],[''],self, InputPassOKHandler);
    try
      // тут можно все что угодно делать с Edit'ами на форме перед показом
      d.ShowModal(procedure (AResult:TModalResult) begin end );
    finally
      freeandNil(d);
    end;
  end
  else
  begin
    SavePersData;
    reloadPersData;
    init;
  end;
end;

модуль UGlobal отсутствует, точней функция GetParentForm. Можете её выложить?

Ссылка на комментарий
  • 0
function GetParentForm(o:TFmxObject):TForm;
var p:TFmxObject;
begin
  result := nil;
  p:=o.parent;
  while (p<>NIL)and(not (p is tform)) do
    p:=p.parent;
  if p<>NIL then
    result := P as TForm;
end;
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...