Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   [Artikel] Den ExitCode eines Dialogfensters nutzen (https://www.delphipraxis.net/68716-%5Bartikel%5D-den-exitcode-eines-dialogfensters-nutzen.html)

Luckie 4. Mai 2006 01:37


[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: Den ExitCode eines Dialogfensters nutzen

himitsu 4. Mai 2006 11:58

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:

Luckie 4. Mai 2006 12:05

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.

himitsu 4. Mai 2006 12:38

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;

Luckie 4. Mai 2006 12:47

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.

himitsu 4. Mai 2006 12:53

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 :?

Luckie 4. Mai 2006 12:56

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. ;)

xaromz 4. Mai 2006 13:12

Re: [Artikel] Den ExitCode eines Dialogfensters nutzen
 
Hallo,
Zitat:

Zitat von Luckie
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. ;)

OT: Ich lese hier ständig von diesem Bug. Was ist denn das Problem? Vielleicht kann man da ja was machen...

Gruß
xaromz

Luckie 4. Mai 2006 13:17

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.

NicoDE 4. Mai 2006 13:40

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.
Seite 1 von 5  1 23     Letzte »    

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