D5pro。
我有一个主应用程序的子表单,Form1带有一个用户可以添加文本的Memo1。
我有一个仅供查看的FormHelp(包含MemoHelp.ReadOnly:= True)。
在Form1中,可以通过单击Form1上的按钮来显示FormHelp,也可以通过Setup中的复选框设置自动显示。
Form1.OnShow...
if FormSetup.cbHelp.Checked then
FormHelp.Show;
OR
Form1.BtnHelpClick(...
FormHelp.Show;
我想在显示“帮助”窗口后将焦点设置回Form1上的Memo1。
我尝试了Memo1.SetFocus,但这不起作用。
我试过这个Using WM_SETFOCUS and WM_KILLFOCUS但是没有用
我得到一个“无法关注..”错误 How to force a focus on a component before the Form is shown
有人可以告诉我如何将焦点放回Memo1
谢谢。
答案 0 :(得分:4)
如果控件的窗体没有焦点,则无法在控件上调用SetFocus。在帮助表格显示之后,备忘录的表格不再具有焦点。相反,帮助表格是焦点。
因此将焦点设置回形式:
Form1.ActiveControl := Form1.Memo1;
Form1.SetFocus;
答案 1 :(得分:0)
只需在对象检查器或代码中设置表单ActiveControl
:
ActiveControl := Memo1;
答案 2 :(得分:0)
FormHelp
在显示时获得输入焦点。尝试拨打BringToFront()
上的Form1
,然后再拨打Memo1.SetFocus()
。