DCGET mit Combobox [erledigt]

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:

DCGET mit Combobox [erledigt]

Beitrag 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}
Zuletzt geändert von Ewald am Do, 24. Sep 2015 12:47, insgesamt 1-mal geändert.
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: DCGET mit Combobox

Beitrag 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]
Gruß
Klaus
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: DCGET mit Combobox

Beitrag 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 
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: DCGET mit Combobox

Beitrag 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".
Herzlich,
Tom
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: DCGET mit Combobox

Beitrag 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]}
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: DCGET mit Combobox

Beitrag 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]}
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: DCGET mit Combobox [erledigt]

Beitrag 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.
Herzlich,
Tom
Antworten