我有一个放置一些 TEdit 的 TFrame。这些编辑是用于串行键输入的框,因为我正在尝试设置一种用户体验,其中输入焦点从一个编辑框跳到下一个编辑框,当在每个编辑框中输入一定数量的字符时。也就是说,用户无需按 Tab 或单击下一个编辑即可前进。
我在 C++ Builder HowTo 书(一本好书)中找到了一个示例,介绍了如何“模拟”输入按下以在编辑中表现得像一个制表键,并试图采用相同的技术。但是,我的应用程序中的某些内容不像该示例那样工作。
在框架 KeyPress 事件中,我有代码
void __fastcall TAboutFrame::Edit1KeyPress(TObject *Sender,
System::WideChar &Key)
{
TEdit* theEdit = dynamic_cast<TEdit*>(Sender);
if(!theEdit)
{
return;
}
if(theEdit->Text.Length() >= 6)
{
//jump to next edit
Perform(WM_NEXTDLGCTL, 0, 0);
...
但是不会发生“跳转”到下一个控件。
主窗体,即框架父级,确实有关键预览 == true,我可以设置一个断点来查看 Perform 调用确实已执行。
编辑的标签顺序是 1,2,3,4,5。
我想知道这是否与 TFrames 消息传递有关?