我有一个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消息传递或?
答案 0 :(得分:0)
如果您使用的控件来自TWinControl(如果您使用的是VCL控件,则应该使用它们),您也可以使用TWinControl-&gt; SetFocus()将焦点显式设置为所需的控件。