Danke!
Und da ich Delphi jetzt einfach mal so glaube, freue ich mich, dass mein Code bis hierhin keine Speicherlecks produziert hat.
Eine letzte Frage habe ich dann aber trotzdem noch:
Ich hatte
hier (etwas weiter unten) bereits geschrieben, wie ich auf die einzelnen Forms im PageControl zugreife. Den Code habe ich um 2 Zeilen kürzen können. Ich würde es aber gern noch übersichtlicher gestalten und daher den Zugriff casten. Folgendes funktioniert leider nicht:
Delphi-Quellcode:
// Aus diesem hier ...
Procedure TMainForm.FormKeyDown(Sender: TObject; Var Key: Word;
Shift: TShiftState);
Var
lDockForm : TDockForm;
Begin
If (PCPics.PageCount = 0) Then Exit;
If (Key = VK_DELETE) Then
Begin
lDockForm:=fPicList.Items[PCPics.ActivePageIndex];
lDockForm.BtnDelete.Click;
End;
End;
// ... soll auch an mehreren anderen Stellen so etwas hier werden:
Procedure TMainForm.FormKeyDown(Sender: TObject; Var Key: Word;
Shift: TShiftState);
Begin
If (PCPics.PageCount = 0) Then Exit;
If (Key = VK_DELETE) Then
With (fPicList.Items[PCPics.ActivePageIndex] As TDockForm) Do
BtnDelete.Click;
// geht auch nicht :-)
(fPicList.Items[PCPics.ActivePageIndex] As TDockForm).BtnDelete.Click;
End;
Wieso geht es so nicht?
Kann man es irgendwie (anders) machen?
[edit]
Ich wäre nicht auf die Idee gekommen, dass es mind. 3 Varianten gibt, wie man casten kann. So klappt es:
Delphi-Quellcode:
Procedure TMainForm.FormKeyDown(Sender: TObject; Var Key: Word;
Shift: TShiftState);
Begin
If (PCPics.PageCount = 0) Then Exit;
If (Key = VK_DELETE) Then
TDockForm(fPicList.Items[PCPics.ActivePageIndex]).BtnDelete.Click;
End;
Aus 8 Zeilen 3 gemacht. Sehr schön.
[/edit]
Gruß, Alex