TabSheet nur bedingt anzeigen
-
Blende doch einfach das TabSheet welches nicht mehr anwählbar sein soll aus. (Das prüfst du ja im OnShow !)
TabSheet2->TabVisible = false;
-
bzw Zugriff über das PageControl
PageControl1->Pages [1]->TabVisible = false;
-
void __fastcall TMain::PagerChanging(TObject *Sender, bool &AllowChange)
{
if(Pager->ActivePage==xxxxxx)
{
AllowChange=true;
}
}
-
@ tabber
Das hilft mir nicht weiter!
Ich muss im onchanging-ereignis feststellen, welches tab denn nun angewählt wurde, aber ich weiss nicht wie!??
-
void __fastcall TF_CarSetup::PageControl1Changing(TObject *Sender, bool &AllowChange) { if (PageControl1->ActivePage == TS_Review) { if (!CheckData()) { AllowChange = false; } } }Das geht auch nicht, weil wenn er beim onchanging NOCH nicht zu TS_Review gewechselt hat!
-
Dann nimm OnChange und setze ggf. zurück mit
ActivePage==
Du kannst dir ja auch im OnChanging in einer globalen Variable merken woher er kommt und im Onchange prüfen und zurücksetzen.
Also
OnChanging
globales_ts=ActivePage;
AllowChange=true;OnChange
if(Bedingung nicht erfüllt)
ActivePage=globales_ts;
-
oh, globale variable hört sich aber ganz mies an...

vielleicht hat da ja jemand noch ne bessere idee??!
-
Hallo
nimm statt der globalen Variable einfach eine Member-Variable des Forms.
bis bald
akari
-
Kann ich in dem OnChanging-Ereignis nicht überprüfen, von wo es ausgelöst wurde - nämlich vom Click auf die TS_Review-Schaltfläche??
Ich habe das mal mit dynamic_cast probiert, leider hab ich das nich hinbekommen, er mag den sender nicht in ein tabsheet wandeln...
-
Hallo
der Sender ist und bleibt immer noch das PageControl.
bis bald
akari
-
und da kann ich nicht feststellen, worauf geklickt wurde?
-
Hallo
dafür ist der Event nicht zuständig.
BCB-Hilfe schrieb:
Mit einer Ereignisbehandlungsroutine für OnChanging können Sie verhindern, daß ein Benutzer eine Registerkarte verläßt, bevor bestimmte Voraussetzungen erfüllt sind.
In diesem Event geht es nur um die zu verlassende Page.
Wenn du die Anwahl einer Page verhindern willst, must du wie bereits schon gesagt TTabSheet::TabVisible zur Laufzeit setzen.
bis bald
akari