![]() |
Tabsheetwechsel mit Bedingung verknüpfen
Hallo Zusammen,
ich habe in meinem Programm ein PageControl mit mehreren TabSheets drauf. Wenn diese TabSheets geöfnet werden, werden auch ein paar Proceduren durchlaufen. Diese Proceduren benötigen Werte, die ans anderen Tabsheets ermittelt werden. Jetzt kann es aber sein, dass ein Wert noch nicht verfügbar ist (warum auch immer). Ich möchte gerne, dass vor dem Wechsel der TabSheets geprüft wird, ob die erforderlichen Werte verfügbar sind. Wenn ja, soll der TabSheetwechsel durchgeführt werden, wenn nein, soll der TabSheetwechsel nicht durchgeführt werden. Ich habe bei allem Suchen nichts gefunden... Hat hier jemand einen Idee für mich? Vielen Dank Ykcim |
AW: Tabsheetwechsel mit Bedingung verknüpfen
Geht im Event onChanging
|
AW: Tabsheetwechsel mit Bedingung verknüpfen
Dafür hat das PageControl das Ereignis OnChanging
|
AW: Tabsheetwechsel mit Bedingung verknüpfen
Hallo,
vielen Dank für die schnelle Hilfe!!! Ich habe es schon versucht, im Event OnChanging. Die Prüfung findet auch vor der Wechsel statt. Ich habe dann angegeben, dass das entsprechende TabSheet Enable:=true sein soll. Es wird aber dennoch geöffnet... Wie würdet Ihr vorgehen? Vielen Dank Ykcim |
AW: Tabsheetwechsel mit Bedingung verknüpfen
Setzte AllowChanging auf False, wenn du einen Wechsel verhindern willst
|
AW: Tabsheetwechsel mit Bedingung verknüpfen
Für das TabSheet oder für das PageControl?
ANdere Tabsheets sollen weiter erreichbar sein können, da nicht jedes TabSheet die gleichen Daten benötigt. Ich brauche eine Kontrolle vor dem Wechsel, ob die erforderlichen Daten für das Tabsheet, welches geöffnet werden soll, verfügbar sind. Wenn nicht, soll der Wechsel auf dieses Tabsheet nicht vollzogen werden. |
AW: Tabsheetwechsel mit Bedingung verknüpfen
Der Event feuert für jedes TabSheet
In ihm kannst du je nach TabSheet eitscheiden, welche überprüfungen durchgeführt werden sollen und ob gewechselt werden soll |
AW: Tabsheetwechsel mit Bedingung verknüpfen
Danke für die Erklärung!
Ich komme leider noch nicht ganz dahinter.
Delphi-Quellcode:
Beide Varianten werden nicht erkannt. Ich weiß nicht, wie ich das "AllowChanging" anwenden muss.
if Daten verfügbar then
begin Tabsheetname.AllowChanging ??? oder PageControlname.AllowChanging??? end; |
AW: Tabsheetwechsel mit Bedingung verknüpfen
Sorry!!!
AllowChange ist ja eine mitgelieferte Variable der Procedure! Wie kann ich diese auf ein bestimmtes TabSheet anwenden? Ich habe gerade folgendes ausprobiert:
Delphi-Quellcode:
Aber wie kann ich abfragen, welches Tabsheet eigentlich geöffnet werden sollte?
if Daten NICHT verfügbar then
begin AllowChange:=false; end; |
AW: Tabsheetwechsel mit Bedingung verknüpfen
Delphi-Quellcode:
AllowChanging ist ein Var-Parameter des Events
AllowChanging := Daten verfügbar;
|
AW: Tabsheetwechsel mit Bedingung verknüpfen
Zitat:
Delphi-Quellcode:
procedure TForm1.PageControl1Changing(Sender: TObject; var AllowChange: Boolean);
begin if ((Sender as TPageControl).ActivePage = TabSheet1) then AllowChange := (Edit1.Text <> '') else AllowChange := True; end; Das sollte dir die nötigen Ansätze geben. :) |
AW: Tabsheetwechsel mit Bedingung verknüpfen
Kleiner Nachtrag:
Ganz so geht das nicht. Ich habe gerade noch was gestest: Im OnChanging hast du noch die alten Werte für TabIndex stehen, aber weißt nicht, wo die Reise hingehen soll. Im OnChange (ohne -ing) hast du die neuenWerte für TabIndex stehen. Du müsstest dir also in eine zusätzliche Variable im OnChanging den alten Wert von TabIndex merken, dann im OnChange deine Prüfungen durchführen, abhängig davon, was geöffnet werden soll (also abhängig vom dann gültigen Wert von TabIndex) und dann, falls die Prüfung fehlschlägt, den alten, zwischengespeicherten Wert von TabIndex wieder zuweisen. Bis denn Bommel |
AW: Tabsheetwechsel mit Bedingung verknüpfen
@mkinzler
er wird das Problem haben dass er das Zieltabsheet beim Klicken nicht kennt... EDIT: sorry Bbommel's Eintrag übersehen , mhhhh :gruebel: |
AW: Tabsheetwechsel mit Bedingung verknüpfen
@ Bummi
Genau das ist mein Problem! @Bbommel Das werde ich mal fix testen und melde mich dann gleich wieder! |
AW: Tabsheetwechsel mit Bedingung verknüpfen
Auf diese Weise funktionierte es. Das einzige, was ich schöner gefunden hätte, wenn der Wechsel garnicht erst erfolgen würde, statt wie jetzt erst erfolgt und dann wieder zurückgeht...
Delphi-Quellcode:
Aber das Wichtigste funktioniert erst einmal - der Rest ist Kosmetik.
if Listen.ActivePageIndex=4 then
if WAAUNR.Caption='' then Listen.ActivePageIndex:=StartTab; Vielen Dank!!! Ykcim |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz