我試圖在我的項目中實現TDI接口。到目前爲止它工作得很好(表單在我的PageControl的選項卡內創建 - 如預期的那樣)。然而,我正面臨着一個惱人的問題:OnKeyPress事件不是因爲它們是「父對象」而在我的子表單上觸發的。我已經試過兩種方式下面,但沒有成功:當Form有父項時,OnKeyPress事件不會被觸發
procedure TForm1.Button1Click(Sender: TObject);
var
f: TForm2;
begin
f := TForm2.Create(self);
f.ManualDock(PageControl1);
f.Show;
end;
- 或 -
procedure TForm1.Button1Click(Sender: TObject);
var
f: TForm2;
tab: TTabSheet;
begin
tab := TTabSheet.Create(PageControl1);
tab.PageControl := PageControl1;
tab.Parent := PageControl1;
f := TForm2.Create(tab);
f.BorderStyle := bsNone;
f.Align := alClient;
f.Parent := tab;
tab.Caption := f.Caption;
f.Show;
end;
¹不用說,KeyPreview屬性被設置爲TRUE。
²如果我只是註釋以下行,事件工作正常(但不是一個標籤頁中創建的形式):
//f.Parent := tab;
有沒有人遇到這個問題?任何幫助? 謝謝!
KeyPreview爲True解釋它。按照設計,活動將轉到頂層表單。 –
正常情況下,KeyPreview只會使窗體在控件中接收* * *添加*中的事件*,所以它仍然可以工作。 – dummzeuch
它應該工作,但它不會。 –