0

我有一个TEdit盒子,KeyUp如果我用"-"空白替换任何出现的"". 当我在 Win32 上运行时,它的工作方式完全符合我的预期 - 每当我键入-密钥时,它都会短暂显示然后被删除。

当我在 iOS 上运行并反复按下该键时,我每隔一次按下-就会删除编辑框中的最后一个字符。例外是第二次和第三次按下,我两次都删除了最后一个字符。它应该只是删除.--

例如,如果我从123456编辑开始并开始按减号键,我会得到您在下面这个 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);
}

我在这里缺少什么基本的东西?我正在使用 C++ Builder 在 Rad Studio 10.3.2 中工作。

4

1 回答 1

1

处理此问题的正确方法是将Key/KeyChar参数设置为 0 以关闭击键,并且根本不操作TEdit::Text

尝试这样的事情:

// or, use the OnKeyDown event instead...
void __fastcall TForm1::EditConstantKeyUp(TObject *Sender,
    WORD &Key, System::WideChar &KeyChar, TShiftState Shift)
{
    if (Key == 0)
    {
        if (KeyChar == _D('-'))
            KeyChar = 0;
    }
    else
    {
        if ((Key == vkMinus) || (Key == vkSubtract))
            Key = 0;
    }
}
于 2019-09-10T21:42:42.723 回答