ComboBox indexieren, Listeneintrag auswählen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: ComboBox indexieren, Listeneintrag auswählen

gelöst

von chrdz » Di, 11.07.2006 09:39

Hallo Thomas,

Es bewahrheitet sich immer wieder, dass der Weg das Ziel ist. Ich habe heute viel gelernt. Vielen Dank.

So hat es funktioniert:

Code: Alles auswählen

oControl = oMyFormDoc2.getbyname("ComboBoxReferent")
aListe = oControl.stringItemList
for i = 0 to ubound(aListe)
J = InStr (aListe(I),":")
if Left(aListe(I),J-1) = refid then
oControl.text = aListe(I)
exit for
Endif
next I
Grüße aus Bayern

Christian

von Toxitom » Di, 11.07.2006 08:59

Hey Christian,

also, ich schau mal auf den Code:
Basic-Laufzeitfehler. Methode oder Eigenschaft nicht gefunden.
Wo bleibt der Interpreter stehen?
Also:

Code: Alles auswählen

for I = 1 to oControl.getItemCount() 
Schon das wird nicht funktionieren. Die Combobox kennt die Methode nicht. Das müsste heissen:

Code: Alles auswählen

aListe = oControl.stringItemList
for i = 0 to ubound(aListe)
Das Array ist dimensioniert - nicht die Liste!
um jetzt beispielsweise den 2. Eintrag zu aktivieren (Index 1) heisst es dann:

Code: Alles auswählen

oControl.text = aListe(1)
Du hast aber recht, die Methode selectItemPos() gibt es zwar bei Listboxen, nicht aber bei der Combobox :-)

Gruss
Thomas

von chrdz » Di, 11.07.2006 08:43

Hallo Thomas,

danke für die schnelle Antwort. Grundsätzlich habe ich Dich wohl richtig verstanden und Du mich. Beim probieren stehe ich vor folgendem Problem. Meine ComboBox kennt die Methode 'selectItemPos' nicht. Die IDL sagt, dass es die Methode gibt. xRay und DBG_Methods sagen ätsch, genauso der Interpreter.

Code: Alles auswählen

oControl = oMyFormDoc2.getbyname("ComboBoxReferent")


xRay oControl
for I = 1 to oControl.getItemCount()
oControl.getItemPos(I,true)
msgBox oControl.Text
next I
Basic-Laufzeitfehler. Methode oder Eigenschaft nicht gefunden. (oControl.getItemCount()) setze ich I = 1 to 1000 kommt die Fehlermeldung bei getItemPos(I,true)) ListBox verhält sich genauso. (schon mal getauscht)

Hilfe!

Gruß

Christian

von Toxitom » Di, 11.07.2006 08:28

Hey Christian,

Wenn ich Deine Antwort richtig deute, kann ich mit selectItemPos die Listbox innerhalb einer Schleife durchsuchen bis ich den passenden Textteil (123) gefunden habe.
Ähm, nein. Das war nur, weil ich nicht genau verstand, was du eigentlich willst. Also, nochmal für mein Verständnis:
Du hast schon eine gefüllte Listbox und möchtest daraus einen Eintrag per Makro "aktiv" schalten, also selktieren. Und dieser Eintrag beginnt mit deiner Zahl?
Wenn das so ist:
Mit der Methode "StringItemList()" bekommst du einen Array aller Einträge der Combobox. Die kannst du nun durchsuchen (per schleife) und den Index feststellen.
Über die Methode "selectItemPos(iPos, true)" kannst du anschliessend den entsprechenden Eintrag "selektieren", also in die Box eintragen. Dabei ist iPos die Nummer des Listeneintrages - entspricht der Indexnummer im Array der Einträge.

Viele Grüße
Thomas

von chrdz » Di, 11.07.2006 07:44

Hallo Thomas,

danke für den Tip. Zur Erklärung:

in der ComboBox stehen Einträge in folgender Form:

123: Joseph Maier (kommt aus concat(id,':',Vorname,Nachname))

aus einem Select bekomme ich 123. Nun muss ich die Combobox nach 123 durchsuchen (Schleife mit InStr (oControl.text,":")).
In Kylix konnte ich die List-, bzw. Combobox mit dem Index durchsuchen, den String auslesen und bekam damit die Position. Wenn ich Deine Antwort richtig deute, kann ich mit selectItemPos die Listbox innerhalb einer Schleife durchsuchen bis ich den passenden Textteil (123) gefunden habe.
Nun stellt sich nur noch die Frage wie ich and die Listbox-Eigenschaften einer ComboBox komme. Könntest Du mir einen Tipp geben?
Werde das baldmöglichst probieren.

Nochmal danke

Grüße

Christian

von Toxitom » Mo, 10.07.2006 16:22

Hey Christian,

sorry, verstehe deine Frage nicht
Wie kann ich den Text der Combobox anzeigen und aktivieren, der den von mir gesuchten Schlüssel enthält?
Was willst du anzeigen? Text der Combobox? Was für Text?
Wie "füllst" du denn die Box? Ist die Combobox überhaupt das richtige Kontrollelement?
Bitte etwas ausführlicher.
Ein paar Grundsätze:
Die Combobox ist an sich eine Kombination aus Textfeld und Listbox. Der Unterschied zur Listbox ist, dass du in eine Combobox manuelle Einträge vornehmen kannst - du bist also nicht auf die vordefinierten angewiesen. In Kombination mit Datenbanken ist die Combobox daher immer dann mit Vorsicht zu geniessen, wenn sie - wie offentsichtlich bei dir - als Auswahlschlüssel dienen soll. Da nimm lieber die Listbox :-)
Im übrigen liefert dir die Text-Eigenschaft die aktuell angezeigte Werte im Auswahlfeld. Und einen Eintrag der Listbox "selektierst" du mit der Methode "selectItem(sItem, true)" bzw. "selectItemPos(iPos, true)". Ein selektierter Eintrag wird automatisch in das Textfekd kopiert.

Viele Grüße
Thomas

ComboBox indexieren, Listeneintrag auswählen

von chrdz » Mo, 10.07.2006 12:52

Hallo,

Die Combobox die ich steuern möchte liegt innerhalb eines Formulars. Die Daten kommen aus einer (concat) Abfrage. Vorn im String steht eine Nummer, dann ein Doppelpunkt. Die Nummer ist der Schlüssel einer Datenbanktabelle.

Nun meine Frage:

Wie kann ich den Text der Combobox anzeigen und aktivieren, der den von mir gesuchten Schlüssel enthält?

Wenn ich mich durch die Eigenschaften der ComboBox suche finde ich nichts, die Liste auf einen Index zu setzen. Kann mir jemand einen Anstoß geben?

Grüße

Christian

Nach oben