Combobox und Autovervollständigen

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Combobox und Autovervollständigen

Beitrag von Jan »

Hat jemand von Euch schon mal soetwas gemacht? Ich möchte gerne, daß man im SLE etwas eingibt, und die Listbox automatisch auf den ersten Wert mit diesem Beginn springt und im SLE anzeigt. Und beim Verlassen auch als gewählten Wert übernimmt.

Die Combobox ist XBPCOMBO_DROPDOWN

Jan
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Rolf Ramacher »

Hallo Jan,

nicht mit einer Listbox aber mit einem Browse.

Hier mein Code Beispiel Auszug. . funkt. tadellos.

oSleSuche := xbpSle():new(drawingArea,,{280, 320},{80,20},,.F.)
oSleSuche:keyboard := {|nKey,mp2,obj| browseSearch(obj, oBrowse, cArtnr)}
oSleSuche:create()
oSleSuche:Show()


FUNCTION browseSearch(oSle, oBrowse, cIndex)
LOCAL cValue := oSle:editBuffer()

Set Softseek on
Dbseek(cValue, .T., cIndex)
oBrowse:refreshAll()
Set Softseek Off
RETURN(.T.)
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Günter Beyes
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 315
Registriert: Mo, 16. Okt 2006 13:04
Wohnort: Region Stuttgart

Beitrag von Günter Beyes »

Hallo Jan,

wenn die Listbox-Werte in einem Array stehen, könnte das so gehen (aus dem Kopf, nur in Stichworten)

oCombobox:XbpSLE:keyboard verwenden

nach jedem Tastendruck :XbpSLE:editBuffer() abfragen

mit diesem Wert ascan() im Array der Listbox-Daten

wenn gefunden,
oCombobox:XbpListbox aufklappen sowie
oCombobox:XbpListbox:setTopItem( <Arrayposition> ) sowie oCombobox:XbpSLE:setData( <Arrayelement > ) sowie
oCombobox:XbpSLE:setMarked() vom ersten automatisch hinzugefügten Zeichen bis zum Ende des Editbuffers


Hoffe ich habe nichts übersehen.

Viele Grüße
Günter
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

@ Rolf: Das habe ich bei Browses auch schon mehrfach gemacht.

@Günter: Ja, das funktioniert. Es gibt dabei allerdings 2 Probleme: Aus irgendeinem Grund wird bei mehr als 1 eingegebenen Buchstaben ein Leerzeichen angehängt. Also muß ich das mit Alltrim(...:editBuffer) auswerten. Den anderen Punkt habe ich noch nicht geknackt. Das Teil ist Großbuchstaben-Sensitiv. Und ich muß gestehen daß ich nicht weiß, wie ich über AScan ein Upper einbaue. Oder das ganze eben nicht Großbuchstaben-Sensitiv zu haben.

Jan
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo Jan,

im Handbuch steht ein Beispiel wie der Codeblock zu bauen ist - hier bei 2 dimensionalem Array.:

Code: Alles auswählen

AScan( aArray, ;   // Suchen ab nStart 
                            {|a| ".DBF" $ Upper( a[F_NAME] ) .OR.; 
                                 ".NTX" $ Upper( a[F_NAME] ) },
du hast einen Parameter hier a, der ein Array Element übergibt.
Nun brauchst du noch z.B. den Suchbegriff hier als String.
So müsste es gehen, wenn nur ein eindimensionales Array besteht:

Code: Alles auswählen

local cSuch := "irgendwas"
x := aScan(aArray,{|a| upper(a) == upper(cSuch) } )
wobei = linksbündig sucht und == EXACT ON entspricht.
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Hubert,

danke für den Hinweis auf die nette Onlinehilfe. Ich meinte mich aus Clipperzeiten zu erinnern, daß da mal irgendwas war. Ich hab das einfach nur nicht mehr zusammenbekommen. Der Blick in die Hilfe hätte da meinem Gedächtnis natürlich sofort auf die Sprünge geholfen.

Jan
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

HI,

ASCAN und ASORT brauche ich auch so selten, dass ich jedesmal reinsehen muss wie die Parameter angegeben werden müssen ... besonders weil einmal nStart und nEnde vor und einemal nach dem Codeblock kommen :wink:
Gruß
Hubert
Antworten