AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamische Seiten mit TPageControl

Ein Thema von frankg · begonnen am 8. Jan 2004 · letzter Beitrag vom 9. Jan 2004
Antwort Antwort
frankg

Registriert seit: 20. Mai 2003
Ort: Wetter
72 Beiträge
 
Delphi 7 Architect
 
#1

Dynamische Seiten mit TPageControl

  Alt 8. Jan 2004, 19:37
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
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Dynamische Seiten mit TPageControl

  Alt 8. Jan 2004, 20:03
Hallo,
Deine Vermutung, dass es der Knopf nicht mag wenn er in einem seiner Eventhandler freigeben wird
ist vollkommen richtig. Lösung sende eine Message via PostMessage.
Im Anhang findest Du ein Beispiel mit HarakiriButtons. Im Quelltext habe auch geschrieben warum
PostMessage zu verwenden ist. Du könntest z.B. DelIndex POstMessage als wParam mit geben.
Angehängte Dateien
Dateityp: zip button_148.zip (163,4 KB, 27x aufgerufen)
  Mit Zitat antworten Zitat
frankg

Registriert seit: 20. Mai 2003
Ort: Wetter
72 Beiträge
 
Delphi 7 Architect
 
#3

Re: Dynamische Seiten mit TPageControl

  Alt 9. Jan 2004, 07:40
Zitat von Jens Schumann:
Hallo,
Deine Vermutung, dass es der Knopf nicht mag wenn er in einem seiner Eventhandler freigeben wird
ist vollkommen richtig. Lösung sende eine Message via PostMessage.
Hallo Jens!

Erstmal vielen Dank für Deinen Tip. Da habe ich mal wieder den Wald vor Bäumen nicht gesehen. An Message-Passing habe ich irgendwie gar nicht gedacht, das ist aber die Lösung! Funktioniert wie ne eins!

Vielen Dank und viele Grüsse

Frank
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz