Hallo Leute!
Heute habe ich mal wieder eine
VCL-Frage. Bevor ich hier ein paar böse Mails bekomme wie "Dynamische Seiten mit TPageControl sind schon beschrieben" oder "Benutz mal die Suchfunktion" möchte ich zunächst sagen, dass das dynamische Verwalten der TTabSheets wunderbar funktioniert.
Das Problem, das ich habe ist wie folgt. Auf den TTabSheets befindet sich eine Toolbar (realisiert mit einem Frame), die auch einen Schliessen-Knopf besitzt. Klickt der Benutzer auf diesen Knopf, so soll das TabSheet geschlossen werden, d.h. nach dem Klicken auf den Knopf soll auch der Knopf selbst entfernt werden. Dazu weise ich dem dynamisch erzeugten Knopf Folgenden OnClick Ereignis-Handler zu:
Delphi-Quellcode:
procedure TForm1.EditCloseButton1Click(Sender: TObject);
var
DelIndex : Integer;
begin
DelIndex := PageControl1.ActivePage.TabIndex;
if PageControl1.PageCount = 1 then
PageControl1.ActivePageIndex := -1
else
PageControl1.ActivePageIndex := PageControl1.ActivePageIndex-1;
PageControl1.Pages[DelIndex].Free;
end;
Wird dieser Ereignis-Handler nicht von dem Knopf selbst aufgerufen (sondern z.B. von einem Menüpunkt aus), so funktioniert alles wunderbar. Wenn man hingegen auf den Knopf klickt, so gibt es eine Zugriffsverletzung (wahrscheinlich weil sich der Knopf selbst löscht). Wie kann man eine solche Situation ohne Zugriffsverletzung handeln (und jetzt komm mir bitte keiner mit einer stummen
Exception ).
Viele Grüsse und vielen Dank
Frank