Verständnisprobleme mit Eltern

Moderator: Moderatoren

Antworten
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

Verständnisprobleme mit Eltern

Beitrag von Ewald »

Moin zusammen,
Ich würde gerne was machen und zeige hier dafür ein sinnentleertes Beispiel. Ich baue mir im main Objekte (Gruppen oder auch Tabs). In verschiedenen Unterfunktionen habe ich dann sowohl Eingaben als auch Ausgaben. Das soll aber optisch alles in den Objekten im Hauptfenster passieren. Wenn ich in den Funktionen eine neue Getlist mit read aufmache geht es zwar, aber es gibt irgendwie immer neue Fenster. Was muss ich denn wohl der Funktion mitgeben damit das klappt ?

Code: Alles auswählen

#include "dcdialog.ch"
proc main
local getlist:={}
vname = "Hein"
nname = "Mück"
@ 01,01 dcgroup og1 caption "Vorname"  size 50,3
@ 04,01 dcgroup og2 caption "Nachname" size 50,3

@ 08,01 dcpushbutton caption "Vorname" size 10,1 ;
        action {||fvorname(getlist,og1)}

@ 08,12 dcpushbutton caption "Nachname" size 10,1 ;
        action {||fnachname(getlist,og2)}

dcread gui fit
return
*---------------------------------------------
function fvorname(xlist,og1)
@ 01,01 dcsay "Vorname" get vname parent og1
return .t.
*---------------------------------------------
function fnachname(xlist,og2)
@ 01,01 dcsay "Nachname" get nname parent og2
return .t.
*---------------------------------------------
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Verständnisprobleme mit Eltern

Beitrag von Tom »

Schau Dir mal die Funktion und die Beispiele zu "DC_MergeGetLists()" an.
Herzlich,
Tom
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Verständnisprobleme mit Eltern

Beitrag von Ewald »

Moin Tom,
danke für den Hinweis. Da habe ich bisher noch keine Berührungen mit gehabt. Werde ich mir umgehend reinziehen.
Gruß
Ewald
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Verständnisprobleme mit Eltern

Beitrag von Ewald »

Hallo Tom,
so einfach geht es nach einigem hin und her. Mal sehen ob sich das für mir bewährt.
Wenn ich das richtig verstehe wird die ursprüngliche getlist in der Funktion um die gets der Funktion erweitert ???
Aber passiert das jedes mal wenn ich die Funktion aufrufe ? Oder merkt DC_MergeGetLists() wenn ein get schon vorhanden ist :?
Gibt es da eine einfache Antwort - oder muss ich schwere Kost wälzen.
Danke nochmals

Code: Alles auswählen

#include "dcdialog.ch"
proc main
local getlist:={}
vname = "Hein"
nname = "Mück"
@ 01,01 dcgroup og1 caption "Vorname"  size 50,3
@ 04,01 dcgroup og2 caption "Nachname" size 50,3

@ 08,01 dcpushbutton caption "Vorname" size 10,1 ;
        action {||fvorname(getlist,og1)}

@ 08,12 dcpushbutton caption "Nachname" size 10,1 ;
        action {||fnachname(getlist,og2)}

@ 08,23 dcpushbutton caption "Ende " size 10,1 ;
        action {||dc_readguievent(DCGUI_EXIT_OK,Getlist)}
dcread gui fit
return
*---------------------------------------------
function fvorname(xlist,og1)
local  getlist:={}
@ 01,01 dcsay "Vorname" get vname parent og1
dcread gui parent og1 exit save
DC_MergeGetLists(xlist,getlist)
return .t.
*---------------------------------------------
function fnachname(xlist,og2)
local getlist:={}
@ 01,01 dcsay "Nachname" get nname parent og2
dcread gui parent og2 exit save
DC_MergeGetLists(xlist,getlist)
return .t. 
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Verständnisprobleme mit Eltern

Beitrag von Tom »

Hallo, Ewald.

Ja, DC_MergeGetLists() ist dafür da, einen bestehenden Dialog zu ergänzen. Man kann das auch verwenden, um z.B. Objekte auf Tabpages erst dann anzeigen zu lassen, wenn die Tabpage aktiviert wird. Das spart beim Aufbau von Dialogen Zeit und Ressourcen.

Wenn Du das jetzt so konstruiert hast, dass eine solche Funktion mehrfach aufgerufen werden kann, musst Du Dir in der Funktion merken, dass es schon einmal geschehen ist - und dann nicht mehr die Gets bauen, sondern nur noch den Fokus auf sie setzen. Statische Variable sind Deine Freunde - oder entsprechende Instanzen Deines Dialogobjekts, in denen Du Dir sowas merken kannst.
Herzlich,
Tom
Antworten