Tabsheet mit Passwort schützen
-
Sorry, natürlich
void __fastcall TForm1::PageControl1Changing(TObject *Sender, bool &AllowChange) {
-
Naja, aber bei OnChanging ist das entsprechende Tabsheet ja noch nicht Active
-
... aber es will 'active' werden...

Das ist doch was du laut dieser Aussage möchtest....das Form_Passwortt auf, was ich ja gerade verhindern möchte, damit der Inhalt des zu schützenden Tabsheets nicht sichtbar wird...
-
@Linde könntest du vielleicht dein Quellcode posten ?
Ich bin gerade dabei herauszufinden wie man ein Menü mit Reitern programmiert und da ist mit TabControl aufgefallen, da knn man Reiter eingeben, aber das sind keine eigenen Fenster sondern dasselbe...was wirklich wenig Sinn macht. Ich brauche eigene Fenster um ein Optionsmenü zu erstellen. Ich habge auch geggogelt und in der hilfe geschaut aber nicht passendes gefunden und wenn dann war das richtig schwer zu verstehen. Warum gibt es keine Komponente wo ich die Reiter eingebe und in den einzelnen Reiter Komponenten platzieren kann ?

mfg
-
Warum, warum, warum.
Warum machst du nicht die Augen auf und benutzt das in diesem Thread ungefähr 7 Millionen Mal erwähnte PageControl?

-
Hallo Herr Jansen
Ich gehe auf "Suchen" gebe ein: PageControl (mit oder ohne Joker)
und finde genau einen Thread und das ist dieser hier ...
Entweder ich bin zu doof das Teil zu bedienen, oder es gibt sage und schreibe nur EINEN Thread der dieses Wort enthält oder die Suchengine ist für den popo ... Bitte kläre mich auf
-
Ja vielleicht funktioniert 'Suchen' wirklich nicht mehr so wie früher.
Wie auch immer, aber er schrieb:Warum machst du nicht die Augen auf und benutzt das in diesem Thread ungefähr 7 Millionen Mal erwähnte PageControl?
und PageControl ist genau das, was Du suchst.
-
Ok abgesehn davon das hier ein Beispiel ist hat er Recht

Mithilfe des "Vordefinierten" Formulare (Mit Registerseite) habe ich es nun geschafft, die Frage wäre aber trotzdem offen wenn es diese Vorgabe nicht gebe, aber ich denke mal nun bekomme ich das hin. :p
-
Hallo noch eine Frage und zwar habe ich eben dieses Zusatzfenster mit Registerkarten. Wenn ich nun das Fenster öffne (Showmodal) dann reagiert das Registerfeld beim ersten Klick in den Reiter nicht (Changing), erst beim erneuten Klicken reagiert der Prozess, das ist mega unpraktisch (lade Settings)
Ich müsste alles in OnActivate des Formulars wiederholen...
Weiß wer eine Lösung
Vielen Dank
-
Hallo
Die genannten Events sind natürlich nur für Seitenwechsel zuständig. Die Erst-Belegung der ersten anzuzeigenden Seite must du natürlich manuell auslösen, in deinem Fall mit dem OnShow-Event des Forms. Aus diesem Grund sollte man auch immer solche Datenoperation (Lesen, Schreiben...) nicht direkt in die Control-Events schrieben, sondern diese in extra Methoden auslagern, die nur noch von den Events aus aufgerufen werden. Dann kann man diese Arbeitsmethoden auch ausführen lassen ohne einen Event auslösen zu müßen bzw. die entsprechende meist kryptische Eventmethode mit verschiedenen unnötigen Parametern aufzurufen.
bis bald
akari
-
Danke für den Tip ich habe es gleich mal ausgelagert, das Problem besteht aber weiterhin, das die Changin-Routine nur dann aktviert wird wenn gechangt wird ist mir klar, nur leider tut sie das nicht beim ersten mal, sprich nach dem ich meine Form geladen habe.
Problembeschreibung(Reiter: General,Layout)
->Hauptformular nun öffne ich das Reiterformular(PagesDlg)
->OnShow lädt mir die Einstellung(General)
-> nun klicke ich auf Layout (eigentlich müsste nun Changing aufgerufen werden)
es passiert nichts
->ich klicke auf General und wieder auf Layout (jetzt führt er Changing aus)Also quasi beim zweiten Reiterklick(Layout), habe nur 2 Reiter.
Das ist wirklich sehr komisch, Manuell habe ich es auf General gesetzt und dank OnShow lädt er auch die Daten.Danke
-
Hallo
Kann ich nicht nachvollziehen. Bei meinem Test wird beim ersten effektiven Seitenwechsel aus effektiv beide Events ausgelöst.
Kann es sein das du die Events dynamisch zuweist oder eine andere Bedingung die Ausführung verhindert? Jedenfalls können wir da ohne weiteren Quellcode von dir nicht weiterhelfen, das kann am besten der Debugger.bis bald
akari
-
Ich verstehe es ebenfalls nicht und beim Debugger kommt bei mir ein CPU-Fenster

void TPagesDlg::change_settings() // Ausgelagerte Changingfkt { TIniFile *ini = new TIniFile("htmlset.ini"); if (Reiter->ActivePage == General) { url = ini->ReadString("Settings","url","NULL"); URL->Text = url; } if (Reiter->ActivePage == Layout) { lay_o = ini->ReadInteger("Settings","layout",0); // load layout int for (short i=0; i<3; i++) // GUI Mark[i]->BorderStyle = bsNone; Mark[lay_o]->BorderStyle = bsSingle; } delete ini; } void __fastcall TPagesDlg::FormShow(TObject *Sender) // load start { TIniFile *ini = new TIniFile("htmlset.ini"); url = ini->ReadString("Settings","url","NULL"); // URL String lay_o = ini->ReadInteger("Settings","layout",0); // Layout URL->Text = url; delete ini; } void __fastcall TPagesDlg::ReiterChanging(TObject *Sender, bool &AllowChange) { change_settings(); // Aufruf } //----------save settings--------------------------------------------------- void __fastcall TPagesDlg::OKBtnClick(TObject *Sender) { TIniFile *ini = new TIniFile("htmlset.ini"); if (URL->Text != url) ini->WriteString("Settings","url",URL->Text); if (lay_a != lay_o) ini->WriteInteger("Settings","layout",lay_a); delete ini; }Vllt hilft das..
Komisch ist auch, dass das Programm die Url nicht spiechert wenn ich nicht im Reiter General bin, also ich muss im jeweiligen Reiter sein um evtl was speichern zu können.Ich fummel schon sehr lange rum und normalerweise bekomme ich das mehr schlecht als Recht hin aber manchmal seh ich da keine ausreichende Lösung ..
Vielen Dank akari
-
Ich schreibe nun einfach für alle Reiter die Startwerte in OnShow dann passt das.