如何在表单创建上调用set焦点

时间:2017-01-15 15:06:57

标签: pascal lazarus

我正在使用一些“搜索”热键创建一个小应用程序,F1到F4搜索到数据库的不同表,所以我创建了一个TPageControl来保存搜索字段并显示结果,所以我有1 PageControl和4个标签页,但我试图将一个if语句设置为正确的搜索字段,我在TPageControl的OnShow事件上调用它,但我收到一条错误消息:表单:TForm无法集中注意力

如果我没有弄错,那是因为找不到文本字段,因为我在应用程序可以在此页面内创建元素之前显示页面,所以,我该如何编辑此代码或哪里可以我用它来使它工作,只记得我需要稍后用热键调用这个程序。

我用来设置焦点的程序只是一个简单的IF,在我的实际案例中有4个条件:

procedure TForm.searchFocus; begin 
if pgcSearches.TabIndex=0 then begin
editFieldNames.SetFocus;
end
else if pgcSearches.TabIndex=1 then begin
editFieldAdresses.SetFocus
end;
end;

1 个答案:

答案 0 :(得分:1)

来自其他论坛的更明确的帮助:

procedure TfrmMain.pcSearchesChange;
begin
case pcSearches.TabIndex of
0: ActiveControl:=edtSearchSongs;
1: ActiveControl:=edtSearchBibles;
2: ActiveControl:=edtSearchWarning;
end;

if Visible then
ActiveControl.SetFocus;
end;