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 2 von 5     12 34     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 Luckie
Luckie

 
Delphi 2006 Professional
 
#11
  Alt 4. Mai 2006, 13:47
Das klingt interessant. Wie ginge das genau mit SetPorp und GetPorp? Das kenne ich noch nicht.
Michael
  Mit Zitat antworten Zitat
NicoDE
 
#12
  Alt 4. Mai 2006, 13:56
Window Properties
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#13
  Alt 4. Mai 2006, 14:01
Klingt gut.
Michael
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

 
Delphi 2007 Professional
 
#14
  Alt 4. Mai 2006, 14:41
Nette Idee .... find ich gut.
Zitat von www.michael-puff.de:
... Auch als Programmierer muss man eben kreativ sein ...
ich würd sogar sagen besonders als Programmierer muss man kreativ sein und darf sich seine Möglichkeiten nicht durch ohh ... ich schweif schon wieder ab (und auch noch OT)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#15
  Alt 4. Mai 2006, 15:10
Zitat von NicoDE:
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).
Ich habe mir das mal überlegt. Ich rufe also den Dialog auf und übergebe einen Zeiger auf eine Struktur. In WM_INITDIALOG speichere ich diesen Zeiger mit SetProp "im" Dialog so zu sagen. Mit GetProp hole ich ihn mir, fülle die Struktur mit Werten und dann schließe ich den Dialog. Aber wie komme ich aus dem Hauptpriggramm an die Daten dran? In dem Moment wo der Dialog geschlossen wird, sind ja auch die an ihm gebundenen Daten futsch. OPder denkst du an eine Kombination aus deiner Möglichkiet und meiner mit dem ExitCode? Also die Struktur als parameter übergeben und mit dem ExitCode wieder zurückgeben?
Michael
  Mit Zitat antworten Zitat
NicoDE
 
#16
  Alt 4. Mai 2006, 15:35
Zitat von Luckie:
Aber wie komme ich aus dem Hauptpriggramm an die Daten dran? In dem Moment wo der Dialog geschlossen wird, sind ja auch die an ihm gebundenen Daten futsch.
Nope, die Daten gehören dem aufrufenden Code...
Delphi-Quellcode:
var
  //...
  SelCmpData: TSelCmpData;
  //...
begin
  //...
  Ret := DialogBoxParam(HInstance, MAKEINTRESOURCE(200), hDlg, @ChooseCompDlgFunc, LPARAM(@SelCmpData));
  //... hier ist die lokale Struktur durch den Dialog gefüllt worden (oder eben nicht, je nach Exit-Code)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#17
  Alt 4. Mai 2006, 15:42
Ach so. Und wo kommt da jetzt SetProp und GetProp ins Spiel? Aber wie wird denn dann die Struktur gefüllt? Sie ist doch nur im Hauptprogramm bekannt.
Michael
  Mit Zitat antworten Zitat
WoGe

 
Delphi 10.3 Rio
 
#18
  Alt 4. Mai 2006, 15:47
Hi,
nur mal so als Einwurf: Früher habe ich solche Daten immer mit SendMessage oder besser mit PostMessage verschickt.
Ist das keine sinnvolle Möglichkeit mehr?

Gruß
wo
  Mit Zitat antworten Zitat
NicoDE
 
#19
  Alt 4. Mai 2006, 15:51
Zitat von Luckie:
Und wo kommt da jetzt SetProp und GetProp ins Spiel?
Die jeweilige Instanz des Dialogs kennt (innerhalb der Dialog-Funktion) immer nur ihr Fenster-Handle. Deshalb muss es den Zeiger auf die zu füllende Struktur 'irgendwo am Fenster-Handle' speichern. Hierzu wird der Zeiger auf die Struktur bei WM_INITDIALOG als Property gespeichert (SetProp). Und immer wenn der Dialog die Struktur benötigt, dann holt es sich den Zeiger mittels GetProp.
(ps: RemoveProp nicht vergessen )

Ergo, keine globalen Variablen und kein Mißbrauch des Exit-Codes.

Zitat von WoGe:
Früher habe ich solche Daten immer mit SendMessage oder besser mit PostMessage verschickt.
Ist das keine sinnvolle Möglichkeit mehr?
DialogBoxParam kejrt erst zurück wenn der Dialog geschlossen wird.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#20
  Alt 4. Mai 2006, 15:53
Ja wer holt sich den Zeiger, aber er kennt doch die Struktur nicht, die dahinterliegt, weil diese Struktur doch nur im Hauptprogramm definiert ist oder wo hast du sie definiert?
Michael
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     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 17:30 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 by Thomas Breitkreuz