AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials [Artikel] Den ExitCode eines Dialogfensters nutzen
Tutorial durchsuchen
Ansicht
Themen-Optionen

[Artikel] Den ExitCode eines Dialogfensters nutzen

Ein Tutorial von Luckie · begonnen am 4. Mai 2006 · letzter Beitrag vom 12. Jun 2006
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    
Benutzerbild von Luckie
Luckie
Registriert seit: 29. Mai 2002
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
Ein Teil meines Codes würde euch verunsichern.
 
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#2
  Alt 4. Mai 2006, 10:58
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#3
  Alt 4. Mai 2006, 11:05
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.
Michael
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#4
  Alt 4. Mai 2006, 11:38
Also ich war der Meinung es sei Lokal, da die Variable nur innerhalb der aufrufenden Prozedur definiert ist.
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;
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#5
  Alt 4. Mai 2006, 11:47
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.
Michael
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#6
  Alt 4. Mai 2006, 11:53
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#7
  Alt 4. Mai 2006, 11:56
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.
Michael
  Mit Zitat antworten Zitat
xaromz

 
Delphi 2006 Enterprise
 
#8
  Alt 4. Mai 2006, 12:12
Hallo,
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#9
  Alt 4. Mai 2006, 12:17
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.
Michael
  Mit Zitat antworten Zitat
NicoDE
 
#10
  Alt 4. Mai 2006, 12:40
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).
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz