我试图在我的项目中实现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
它应该工作,但它不会。 –