Ich versuche, eine TDI-Schnittstelle in meinem Projekt zu implementieren. Es funktioniert soweit gut (die Formulare werden in Tabs auf meinem PageControl erstellt - wie erwartet). Ich stehe jedoch vor einem nervigen Problem: Das OnKeyPress-Ereignis wird nicht auf meine untergeordneten Formulare ausgelöst, nur weil sie "parented" sind. Ich habe unten in beiden Richtungen versucht, aber ohne Erfolg:OnKeyPress Ereignis wird nicht ausgelöst, wenn Formular ein Elternteil hat
procedure TForm1.Button1Click(Sender: TObject);
var
f: TForm2;
begin
f := TForm2.Create(self);
f.ManualDock(PageControl1);
f.Show;
end;
-ODER-
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;
¹ unnötig zu sagen, dass die KeyPreview-Eigenschaft auf True gesetzt ist.
², wenn ich nur die folgende Zeile kommentieren, das Ereignis funktioniert gut (aber die Form ist nicht in einem tabsheet erstellt):
//f.Parent := tab;
Hat jemand vor dieser Frage konfrontiert? Irgendeine Hilfe? Danke!
KeyPreview wahr zu sein, erklärt sie. Das Ereignis wird wie geplant auf das oberste Formular übertragen. –
Normalerweise KeyPreview nur das Formular erhält die Ereignisse * in * * Zusatz * an das Steuerelement, so sollte es noch funktionieren. – dummzeuch
Es sollte funktionieren, aber es tut es nicht. –