У меня есть поле TEdit
, и в его событии KeyUp
я заменяю любое вхождение "-"
пробелом ""
. Когда я запускаю Win32, он работает именно так, как я ожидаю - каждый раз, когда я набираю клавишу -
, он ненадолго появляется, а затем удаляется.
Когда я запускаю iOS и несколько раз нажимаю клавишу -
, я получаю результат удаления последнего символа в поле редактирования каждый второй раз, когда я нажимаю -
. Исключение составляют 2-е и 3-е нажатия, при которых я оба раза удаляю последний символ. Это должно быть просто удаление -
.
например Если я начну с 123456
в Edit и нажму только клавишу минус, я получу то, что вы видите на этом gif ниже:
В табличной форме результаты следующие:
void __fastcall TForm1::EditConstantKeyUp(TObject *Sender, WORD &Key, System::WideChar &KeyChar,
TShiftState Shift)
{
if (KeyChar == 45) { // minus key pressed (ascii code for that key is 45)
EditConstant->Text = StringReplace(EditConstant->Text, "-", "", TReplaceFlags() << rfReplaceAll);
}
Какую фундаментальную вещь мне здесь не хватает? Я работаю в Rad Studio 10.3.2, используя C++ Builder.