Dropdown Auswahl finden
-
Huhu
hab hier nen Dropdownfeld, in der z.B. 3 Einträge drinstehen. Hab auch ne Member dafür angelegt. Das Problem ist jetzt aber, dass hinter jedem Eintrag eine andere Datenbank steckt. Sprich: Er soll erkennen, was ich auswähle und dann den ersten Eintrag der ausgewählten Datenbank anzeigen.
Mein Problem bewirkt sich jetzt darin, dass ich schon einige Nachrichten ausprobiert habe, aber alle nicht den gewünschten Erfolg brachten.
Hinter den Nachrichten soll folgender Quelltext stehen:
UpdateData(TRUE); --Datenbankabfrage--;
Das Problem ist nur, dass er mir das UpdateData(TRUE); erst macht, wenn ich nochmal draufklicke. Ist ja auch irgendwie logisch, weil die Auswahl ja auch vorher noch nicht drin ist. Aber genau das ist das Problem. Er muss beim klicken der Auswahl das erkennen und dann dementsprechend öffnen. Ich hab auch schon die Nachricht ausprobiert, dass er das UpdateData dann macht, wenn die Combobox wieder "geschlossen" wird. Aber das Problem bleibt weiterhin, dass der Wert dann noch nicht drinsteht und er somit auch nichts zuweisen kann.
Bin für eure hifle sehr dankbar.
-
Nimm OnSelchange... und frag da mit GetCurSel ab, was gewählt ist. UpdateData funktioniert da nicht - frag aber nicht wieso.
-
aso
gut,
also muss die OnSelChange die GetCurSel aufrufen, gell?
-
hää?
ich komm grad voll nicht klar *Ggg*
sorry
ich hab jetzt die Nachricht CBN_SELCHANGE hinzugefügt
jetzt weiß ich aber nicht, wie ich die GetCurSel anwenden muss
-
Du brauchst eine Controlvariable für die Combobox.
-
die member (string) kann ich nicht dafür nehmen, oder?
-
aja
Wert = Control
und Combobox lassen gell?
-
ok, das hab ich jetzt
aber immer noch keine Ahnung, wie ich die beschreiben oder auswerten soll
hab das mal so versucht, was natürlich nicht klapptvoid Katalog_Fehler::OnSelchangeCombo1() { // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen m_cCombo = GetCurSel(); }
-
int nSel = m_cCombo.GetCurSel();
-1 heißt nichts ist gewählt und ab 0 ist es dann der Index der gewählten Zeile.
-
jo, ich bin ein bissl weiter
man sollte auch die richtigen operatoren wie . oder so verwenden *gg*
-
aber wie werte ich die nun aus?
irgendwie muss ich doch daraus dann nen string machen oder so
-
Hmm, ich dachte, du könntest das dann über ne switch lösen.
Wenn du unbedingt nen CString haben willst, versuch doch mal:
CString strText; m_cCombo.GetWindowText(strText);
-
ja, ich habs grad mit int gemacht
das geht auchbei int seh ich aber das prob, das er die automatisch sortiert und somit der wert nicht vielleicht immer der gewünschte string ist
bei str ging das ja einfacher
denn es kann ja sein, dass ich irgendwann mal so erweiter, dass ich im laufenden programm eine funktion mache, die einen neuen string dort einträgt; dann sortiert er neu und weg sind die int werte
-
aber mit int war doch richtig, das auszuwerten, oder?
hättest du vielleicht ne andere idee, wie man das noch machen könnte?
-
Erstens hab ich dir oben geschrieben, wie du an den String können müßtest,
und zweitens kannst du doch das Sortieren abschalten,
und drittens gibt es die Funktionen SetItemData und GetItemData, zu denen du per Suche (sie geht wieder) mind. eine Beschreibung finden solltest.
-
-
ja, den string krieg ich, aber ist genau das gleiche problem wie bei UpdateData()
kann man nicht den aktuellen string von der auswahl kriegen?
irgendwie so:
CString strText; int ID; ID = m_cCombo.GetCurSel(); m_cCombo.GetWindowText(strText,ID);
-
hat sich erledigt
hab mir den Thread grad durchgelest *gg*
GetLBText
ich danke dir für deine hilfe
-
Gern geschehen.
GetLBText vergesse ich immer wieder, weil ich mit GetItemData arbeite.
-
ja, ich kenn das
man arbeitet mit so vielen sachen
für das eine dies, für das andere das etc etcnochmal ne frage
gibt es bei der Combobox vielleicht auch ne unterteilungsmöglichkeit, dass es dann so in der art aussieht?
Test1
Test2
Test3
Test4
-----
Neu Test