XbpCombobox Item anzeigen

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
vorti
UDF-Programmierer
UDF-Programmierer
Beiträge: 61
Registriert: Mo, 25. Sep 2017 12:21

XbpCombobox Item anzeigen

Beitrag von vorti »

Hallo,

kann mir jemand sagen warum mir mein zuletzt ausgewähltes Item nicht angezeigt wird in der Combobox.

Code: Alles auswählen

oTest:= XbpCombobox():new( drawingArea, , {215, 40}, {85,70}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )
oTest:tabstop := .T.
oTest:type := XBPCOMBO_DROPDOWNLIST
oTest:create()
oTest:addItem ("Test1")
oTest:addItem ("Test2")
oTest:addItem ("Test3")
oTest:setData( { nPos } )

was evtl. noch wichtig ist. Ich übergebe am Ende nicht die komplette Zeichenkette in die Datenbank sondern nur ein Zeichen.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: XbpCombobox Item anzeigen

Beitrag von georg »

Hallo, vorti -


tja, was steht in nPos drin? Wenn das die Position des letzten, ausgewählten Elementes ist, dann sollte das korrekt sein.

Die XbpComboBox() setzt sich aus einem XbpSLE() und einer XbpListBox() zusammen. Wenn Du einen Eintrag in das Textfeld setzen willst, verwendest Du die Methode des XbpSLE(), also oTest:XbpSLE:setData().

Laut Dokumentation kommt die XbpListBox()-Klasse zuerst in der Ableitung, daher greift :setData() bzw. :getData() auf die entsprechenden Methoden der XbpListBox() zurück.

Du kannst es ja auch mal mit oTest:XbpListBox:setData(nPos) versuchen.

Was wird denn angezeigt, wenn die XbpComboBox() angezeigt wird? Und, was steht in nPos drin?
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
vorti
UDF-Programmierer
UDF-Programmierer
Beiträge: 61
Registriert: Mo, 25. Sep 2017 12:21

Re: XbpCombobox Item anzeigen

Beitrag von vorti »

Ich benutze nPos für die Übergabe an die Datenbank, was ja auch funktioniert.

Code: Alles auswählen

nPos:= oTest:getData()[1]
if  nPos = NIL .or. nPos = 1
   replace x   with  "T1"
elseif   nPos = 2
   replace x   with T2"
elseif   nPos = 3
   replace x   with "T3"
endif
Wenn ich am Anfang den Wert von x an eine Variable übergebe, diese anpasse und mit XpbSLE ausgebe, funktioniert es auch.

Code: Alles auswählen

do case
case x = "T1"
      cx := "Test1"
case x = "T2"
      cx := "Test2"
case x = "T3"
      cx:= "Test3"
endcase
Das heißt, wenn ich z.B. Test2 ausgewählt + bestätigt habe, bekomme ich bei erneuten Aufruf im XpbSLE auch Test2 angezeigt, in der Combobox allerdings nur ein leeres Feld (irgendwie übereinander kann man die nicht legen, oder?).

Ich bin im übrigen eher Anfänger, also wenn es allgemein ein besseren Lösungsvorschlag gibt, würde ich den auch nehmen.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: XbpCombobox Item anzeigen

Beitrag von georg »

Hallo, vorti


wir haben alle mal angefangen.

Die XbpComboBox() ist quasi eine Sammlung von zwei Xbase-Parts. Wenn ein Eintrag in der XbpListBox() markiert werden soll, dann muss Du dort einen numerischen Wert übergeben (den vermisse ich in Deinem Beispiel).

oTest:XbpSLE:setData("Zeichenstring") ==> setzt den Inhalt im Zeicheneingabefeld
oTest:XbpListBox:setData(3) ODER oTest:setData(3) ==> setzt den Inhalt in der Listbox
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
vorti
UDF-Programmierer
UDF-Programmierer
Beiträge: 61
Registriert: Mo, 25. Sep 2017 12:21

Re: XbpCombobox Item anzeigen

Beitrag von vorti »

Vielen Dank, ich habe es jetzt so gelöst.

oTest:setData( { nPos } )
oTest::XbpListBox:setData( nPos2 )

und "nPos2" dann je nach dem auf 1,2 oder 3 gesetzt.
Antworten