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

FormatSettings. DecimalSeparator в Android


x11

Вопрос

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

 

procedure TfmEditObject.Edit1KeyDown(Sender: TObject; var Key: Word;
  var KeyChar: Char; Shift: TShiftState);
begin
  if (KeyChar = '.') or (KeyChar = ',') then
    KeyChar := FormatSettings.DecimalSeparator;
end;

На Windows это работает. А вот в Android проблема - вводится и точка, и запятая. Замены не происходит.

Изменено пользователем Andrey Efimov
Заголовок съехал, поправил
Ссылка на комментарий

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

  • 0

В Android у меня тоже таким образом не получалось. И функция TEdit.FilterChar, предназначенная для таких целей, тоже под Android не работает. Буду рад, если окажется, что это как-то можно обойти.

Могу посоветовать, если для ваших целей это конечно подходит, позволить пользователю вводить и точку, и запятую, а затем, после окончания ввода, уже заменить десятичный разделитель на правильный через StringReplace, например. 

Если у вас целевая аудитория включает разные страны, то наверное было бы неплохо позволить пользователю вводить дробные числа в таком формате, в котором ему привычнее их видеть. Хоть это конечно не отвечает на ваш вопрос. Имхо, конечно.

 

Изменено пользователем Alex7wrt
Ссылка на комментарий
  • 0

тут как бы нечего сказать, кроме - "а для чего вам дебаггер-то дан?"

заходит программа в этот обработчик? если заходит, то когда? какие значения принимают параметры Key и KeyChar?

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

Делать привязку к KeyDown я бы вообще не рекомендовал. Была б моя воля я бы такие события, которые работают с физическими устройствами (OnMouseXXX, OnKeyYYY) вообще выпилил, ну нету на телефоне ни физической мыши, ни клавиатуры. Сенсорный экран есть и голосовой ввод есть, но это несколько иные вещи. Попытка эмулировать виндовое поведение, ради совместимости которой всё равно нет, приводит к таким вот проблемам.

Если надо что-то сделать, с введенным текстом, то реагировать можно в OnChange, OnExit или вообще по нажатию на кнопку "Ok" делать подмену десятичного разделителя.

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

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

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

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

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

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

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

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

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

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...