Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Problem mit PageControl/TabSheet (https://www.delphipraxis.net/135405-problem-mit-pagecontrol-tabsheet.html)

Woodman 10. Jun 2009 11:27


Problem mit PageControl/TabSheet
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Wissende,

ich möchte mir ein Wizard-Like-Programm bauen und verwende dazu eine PageControl mit TabSheets.
So weit so gut.
Wo ich jetzt ein Problem mit habe, ist zu erkennen, wann ich ein TabSheet verlasse und ein anderes öffne. Die "OnShow"- und "OnHide"-Ereignisse treten nämlich in "falscher" Reihenfolge auf:
Angenommen ich bin auf TAB1 und wechsele zu TAB2, dann kommt zuerst das Ereignis "OnShow" von TAB2 und dann "OnHide" von TAB1!
Code:
Seite 2: OnShow
Seite 1: OnHide
Wenn ich nur die Reiter zum Umschalten benutze, dann würde es funktionieren, dann könnte ich die OnChanging- und OnChange-Ereignisse der PageControl benutzen:
Code:
OnChanging, Seite 1
Seite 2: OnShow
Seite 1: OnHide
OnChange, Seite 2
Wenn ich aber - wie oben schon erwähnt - das Programm Wizard-like gestalten möchte und ich wechsele die Seiten mit "Weiter" bez. "Zurück", dann treten die "OnChang*"-Ereignisse nicht auf:

Wer es selber testen möchte: Im Anhang ist ein kleines Projekt, mit dem man das Testen kann.
Auch das auftreten der Ereignisse "OnEnter" und "OnExit" der PageControl sind unlogisch - kann auch mit dem anhägenden Programm getestet werden.

Hat jemand eine Idee, wie man richtig abfangen kann, wenn eine Seite verlassen wird, bevor die nächste Seite betreten wird?

jaenicke 10. Jun 2009 11:30

Re: Problem mit PageControl/TabSheet
 
Zitat:

Zitat von Woodman
Wenn ich aber - wie oben schon erwähnt - das Programm Wizard-like gestalten möchte und ich wechsele die Seiten mit "Weiter" bez. "Zurück", dann treten die "OnChang*"-Ereignisse nicht auf:

Wäre ja auch Blödsinn. Du hast ja bereits Code, der an der Stelle ausgeführt wird, wenn du das Wechseln manuell auslöst. Und dann wäre es ja ungünstig, wenn zusätzlich die Ereignisse kommen. Denn bei denen erwartet man ja eine Aktion des Benutzers.

mkinzler 10. Jun 2009 11:32

Re: Problem mit PageControl/TabSheet
 
Löse den Event doch manuell aus.

jaenicke 10. Jun 2009 11:50

Re: Problem mit PageControl/TabSheet
 
Wenn, dann wäre es sinnvoll den dort ausgeführten Code in eigene Prozeduren auszulagern. Die könnte man dann von überall aufrufen. Ggf. gleich mit weiteren Parametern.

Woodman 10. Jun 2009 14:58

Re: Problem mit PageControl/TabSheet
 
Liste der Anhänge anzeigen (Anzahl: 1)
Danke für Eure Meinungen.
Ich habe herausgefunden wie es funktioniert (Wenn man sowohl die Reiter als auch die Tasten "Weiter" und "Zurück" verwenden will):
Einfach
Delphi-Quellcode:
PageControl.SelectNextPage(True,False) // für Weiter
PageControl.SelectNextPage(False,False) // Zurück
aufrufen. Und schon werden die OnChang*-Ereignisse aufgerufen.
Beiliegend mein geändertes Testprogramm.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:53 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