在VCL TFrame中推进控制焦点

时间:2014-12-12 18:07:21

标签: c++builder vcl tframe

我有一个TFrame,其中放置了一些TEdits。这些编辑是 用于串行键输入的框,因为我正在尝试设置用户体验 当一定量的输入焦点从一个编辑框跳到下一个编辑框时 每个字符都输入了字符。也就是说,用户不需要按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消息传递或?

1 个答案:

答案 0 :(得分:0)

如果您使用的控件来自TWinControl(如果您使用的是VCL控件,则应该使用它们),您也可以使用TWinControl-&gt; SetFocus()将焦点显式设置为所需的控件。