Seite 1 von 1

DCGET mit Combobox [erledigt]

Verfasst: Mi, 23. Sep 2015 17:13
von Ewald
Moin zusammen,
ich knabbere an einem Problem(chen) mit der Combobox. In diesem Programmteil wird die Eingabe eines Namen gefordert. Bei Anwahl der Combobox wird eine Liste der Vornamen angezeigt (Element 1) und bei Auswahl der Nachname aarr[n,2] zurückgegeben und in vname übernommen. So weit so gut. Jetzt habe ich überlegt, das es sinnvoll wäre, nach der Eingabe bzw. Wahl von vname auch den Ort anzuzeigen. Und da finde ich keine vernünftige Lösung. vname in aarr scannen geht natürlich, aber das halte ich für zu umständlich. Im Zuge der Eingabe bzw. der Auswahl steht ja meine gewünschte info aarr[n,3] fest. Ich bekomme sie nur nicht zu packen.
Wo muss ich den Hebel wohl ansetzen ?
Danke für jeden Tip
Ewald

Code: Alles auswählen

aadd(aarr,{"Ewald","Saur","Horneburg"})
aadd(aarr,{"Hein","Mück","Hamburg"})
aadd(aarr,{"Josef","Meier","Berlin"})

vname = space(30)
vort  = space(30)

@ 1,25 dcsay "Name   "     
@ 1,32     DCGET vname picture "@!@K" getsize 30,1.2 ;
           TABSTOP ;
           COMBO ;
           HEIGHT 7 ;               
           WIDTH 70 ;               
           DATA aarr ;
           ELEMENT 1 ;
           RETURN {|n|aarr[n,2]} ;
           LISTFONT '10.Lucida Console' ;
           HOTKEY xbeK_ALT_L ;
           KEYDROP ;
           valid {||dc_getrefresh(getlist)}
          
@ 1,50 dcsay {||den ort oder aarr[n,3] oder vort}

Re: DCGET mit Combobox

Verfasst: Do, 24. Sep 2015 7:43
von Koverhage
Hallo Ewald,


ich mache das so

RETURN {|n|aarr[n,2]} VALID {|| updort(@Vort,aarr, n)}

In der function updort den Ort
vort := aarr[n,3]

Re: DCGET mit Combobox

Verfasst: Do, 24. Sep 2015 11:42
von Ewald
Moin Klaus,
hab ich sofort in meinen Ouellcode eingebaut.
Doch wie ich es auch schreibe, ein Valid wird an dieser Stelle nicht akzeptiert. Hier mal testweise ohne Funktion. Da kommst sofort ein Syntaxfehler hoch. Setzt du vielleicht noch ein paar Klammern mehr oder dergl. ?

Code: Alles auswählen

@ 1,32     DCGET vname picture "@!@K" getsize 30,1.2 ;
           TABSTOP ;
           COMBO ;
           HEIGHT 7 ;               
           WIDTH 70 ;               
           DATA aarr ;
           ELEMENT 1 ;
           RETURN {|n|aarr[n,2]} VALID {||1=1} ;
           LISTFONT '10.Lucida Console' ;
           HOTKEY xbeK_ALT_L ;
           KEYDROP 

Re: DCGET mit Combobox

Verfasst: Do, 24. Sep 2015 11:49
von Tom
Du hast das VALID innerhalb des COMBO-Segments (zwischen COMBO und LISTFONT - das gehört zusammen). Setz es mal z.B. hinter das "GETSIZE 30,1.2".

Re: DCGET mit Combobox

Verfasst: Do, 24. Sep 2015 11:58
von Tom
Ach so. Du kannst natürlich auch in der RETURN-Klausel bzw. im entsprechenden Codeblock alles mögliche tun - wichtig ist nur, dass der letzte Befehl das fragliche Arraysegment retourniert:

Code: Alles auswählen

RETURN {|n|nMeinAnderesFeld := aarr[n,3],DC_GetRefresh(oAnderesFeld),(...),aarr[n,2]}

Re: DCGET mit Combobox

Verfasst: Do, 24. Sep 2015 12:46
von Ewald
Hallo Tom,
genau so habe ich mir das vorgestellt. Ich musste nur meine Variable vort in nMeinAnderesFeld umbenennen. :lol:

Danke und tüss bis zur nächsten Blockade.
Ewald

Code: Alles auswählen

RETURN {|n|nMeinAnderesFeld := aarr[n,3],DC_GetRefresh(oAnderesFeld),(...),aarr[n,2]}

Re: DCGET mit Combobox [erledigt]

Verfasst: Do, 24. Sep 2015 14:30
von Tom
Am Rande: Bei den Optionen für z.B. DCSAYGET muss man ein bisschen aufpassen. Es gibt da einige Bereiche, die zusammengehören, etwa bei "COMBO", aber auch bei "POPUP". Die dortigen Optionen sollten der jeweiligen Klausel folgen (POPUP ... POPCAPTION ... POPHEIGHT) und nicht mit anderen vermischt werden. Ansonsten ist die Anordnung weitgehend beliebig, vom eröffnenden Kommando (DCSAY/DCGET) abgesehen. Was in der Hilfe eingerückt ist, sollte dem jeweils eröffnenden Kommando folgen, sonst gibt's einen Syntaxfehler. Das gilt z.B. auch für DRAG ... DIALOG, die gehören zusammen. Da darf kein VALID oder PICTURE oder so dazwischenstehen.