![]() |
[Artikel] Den ExitCode eines Dialogfensters nutzen
Beim Refactoring des Usermanagers bin ich auf ein Problem gestossen, was ich bisher eher unbefriedigend gelöst habe. Dies mal aber habe ich, eine für mich, befriedigende Lösung gefunden, wie ich denke. In diesen Artikel geht es um das Problem und wie ich es dann gelöst habe.
Artikel: ![]() |
Re: [Artikel] Den ExitCode eines Dialogfensters nutzen
Also ich hatte mir och 'ne variable in der Unit mit dem Dialog erstellt (innerhalb der DialogKlasse) ... nur daß ich dann direkt auf diese Variable Zugriff.
Da man die DialogUnit eh da einbeinden muß, wo man den Dialog aufrufen will, hat man natürlich auch Zugriff auf die darin daklarierte Variable :stupid: |
Re: [Artikel] Den ExitCode eines Dialogfensters nutzen
Ginge natürlich auch. Aber somit greifst du auf eine globale Variable zu. Hier ist ja nur die Struktur global. Und ich müsste mal ausprobieren, ob es nicht reicht EndDialog aufzurufen, um den Dialig zu beenden oder ob man unbedingt über WM_CLOSE gehen muss. Reicht EndDialog aus, kann man die Variable sogar lokal un der Fensterprozedur deklarieren.
|
Re: [Artikel] Den ExitCode eines Dialogfensters nutzen
Also ich war der Meinung es sei Lokal, da die Variable nur innerhalb der aufrufenden Prozedur definiert ist. :gruebel:
Außerdem bräuchte man dann keinen zusätzlichen Record, da alles ja direkt in der Klassendefinition enthalten wäre ^^
Delphi-Quellcode:
Var Dialog: TDialog;
Begin Dialog := TDialog.Create; Try If Dialog.Execute Then Begin ... Dialog.MeineVariable ... End; Finally Dialog.Free; End; End; |
Re: [Artikel] Den ExitCode eines Dialogfensters nutzen
Ja, aber wenn du sie lokal deklarierst und sendest dann WM_CLOSE mit SendMessage, springt er aus der Fensterprozedur raus und wenn er dann bei WM_CLOSE ankommt, ist der Inhalt wieder vergessen, weil sie lokal ist.
Du hast in deinem Beispiel aber einen ganz anderen Ansatz. Und zwar einen objektorieintierten. Die Methode Dialog.Execute wird bei dir wahrscheinlich DialogBox(...) aufrufen. |
Re: [Artikel] Den ExitCode eines Dialogfensters nutzen
Ich dachte sowas könnte man halt och auf nonVCL ummoscheln (hab ja sozusagen och gerade erst mit dieser Materie angefangen) ... na ja, dann halt nicht :?
|
Re: [Artikel] Den ExitCode eines Dialogfensters nutzen
Klar kann man das. Motzi hatte für den Usermanager ein komplettes objektorientiertes Framework entworfen. Nur leider mit einem hartnäckigen Bug, der es leider unbrauchbar macht. ;)
|
Re: [Artikel] Den ExitCode eines Dialogfensters nutzen
Hallo,
Zitat:
Gruß xaromz |
Re: [Artikel] Den ExitCode eines Dialogfensters nutzen
So bald man in einem Editfeld etwas eingibt, reagiert das Fenster nicht mehr. Aber den bug kann nur Motzi finden, weil er einen Überblick über seinen Code hat. Desweiteren würde es bedeuten, dass ich alle Quellen weitergeben müsste und das will ich (noch) nicht. ;) Aber das wird hier jetzt offtopic.
|
Re: [Artikel] Den ExitCode eines Dialogfensters nutzen
Man könnte beim Aufruf von DialogBoxParam() auch den Zeiger auf eine Struktur übergeben (kommt in WM_INITDIALOG an, wenn ich mich recht erinnere).
Diesen Zeiger kann man sich dann im Dialog lokal speichern (SetProp/GetProp). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:01 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