iOS 上的 StringReplace 行为
StringReplace behavoir on iOS
我有一个 TEdit
框,在它的 KeyUp
事件中,我将用空白 ""
替换任何出现的 "-"
。当我在 Win32 上使用 运行 时,它完全按照我的预期工作 - 每当我键入 -
键时,它都会短暂显示然后被删除。
当我在 iOS 上 运行 并重复按 -
键时,我得到的结果是删除编辑框中的最后一个字符 每隔一个 我按 -
的时间。例外是第 2 次和第 3 次按下,我两次都删除了最后一个字符。它应该只是删除 -
.
例如如果我从“编辑”中的 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);
}
我在这里缺少什么基本的东西?我在 Rad Studio 10.3.2 中使用 C++ Builder 工作。
正确 处理此问题的方法是将 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;
}
}
我有一个 TEdit
框,在它的 KeyUp
事件中,我将用空白 ""
替换任何出现的 "-"
。当我在 Win32 上使用 运行 时,它完全按照我的预期工作 - 每当我键入 -
键时,它都会短暂显示然后被删除。
当我在 iOS 上 运行 并重复按 -
键时,我得到的结果是删除编辑框中的最后一个字符 每隔一个 我按 -
的时间。例外是第 2 次和第 3 次按下,我两次都删除了最后一个字符。它应该只是删除 -
.
例如如果我从“编辑”中的 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);
}
我在这里缺少什么基本的东西?我在 Rad Studio 10.3.2 中使用 C++ Builder 工作。
正确 处理此问题的方法是将 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;
}
}