2013-05-11 63 views
2

D5pro。form.show將焦點設置爲底層表單

我有一個主應用程序的子窗體,帶有用戶可以添加文本的Memo1的Form1。

我有一個僅用於查看的FormHelp(包含MemoHelp.ReadOnly:= True)。

在Form1中,FormHelp可以通過單擊Form1上的按鈕來顯示,也可以通過設置中的複選框設置自動顯示。

Form1.OnShow... 
if FormSetup.cbHelp.Checked then 
    FormHelp.Show; 

OR

Form1.BtnHelpClick(... 
    FormHelp.Show; 

我想顯示幫助窗口後,將焦點設置回Memo1在Form1上。

我試過了Memo1.SetFocus但是不起作用。

我想這Using WM_SETFOCUS and WM_KILLFOCUS並沒有奏效

我得到這個 How to force a focus on a component before the Form is shown

「無法集中。」錯誤是否有人可以告訴我怎麼把焦點回到Memo1

謝謝。

回答

4

如果控件的窗體沒有焦點,則無法在控件上調用SetFocus。在幫助表格顯示後,備忘錄的表格不再有重點。相反,幫助表單有重點。

因此將焦點設置回形式:

Form1.ActiveControl := Form1.Memo1; 
Form1.SetFocus; 
+0

謝謝,完美的作品。 – user2373289 2013-05-12 01:06:23

0

只需設置窗體的ActiveControl,無論是在Object Inspector或代碼:

ActiveControl := Memo1; 
0

FormHelp獲得了輸入焦點時,將顯示它。在致電Memo1.SetFocus()之前,嘗試在Form1上撥打BringToFront()