ComboBox füllen und anschliessend wieder holen....
-
Hallöchen an alle
ich habe folgende Frage.
Ich habe eine ComboBox (CString -> m_sComboBox) und will diese mit ein paar CStrings füllen. Anschliessend will ich die Wahl welche der Benutzer getroffen hat wieder erkennen.
Ich benötige einen Quelltext zu schreiben in ComboBox.
Sowie einen mit welchem ich die Wahl des Benutzers wieder "identifizieren" kann über einen Idex oder so!Würde mich sehr freuen wenn mir jemand weiter helfen kann.
Vielen Dank Rudi
-
if (CB_ERR != (iIndex = pComboBox->AddString(pItem->ShowItemName()))) { pComboBox->SetItemData(iIndex, (DWORD)pItem); }
die 2. zeile kannste dir evtl sparen. in der ersten zeile werden unter dem iIndex die strings in die box geschrieben. mit der 2. zeile werden and der iIndex stelle pointer auf objekte abgelegt, so dass du dir nachher den pointer nach einer auswahl wieder holen kannst (du kannst aber auch die iIndex speicher):
in einer anderen methode dann, nach einer auswahl:
CObjekt* pObjekt = 0; int iIndex = pComboBox->GetCurSel(); pObjekt = (CObjekt*)pComboBox->GetItemData(iIndex);
Esco
-
Vielen Dank!
Aber ich habe sehr große probleme mit pointern.
Ich habe eine CString (CString test = _T("Hallo"); ) diesen will ich in meine ComboBox
(IDC = IDC_ADRESS_COMBO1 Type = CComboBox Member = m_cAdressCombo1)
schreiben.Wie muß ich da meinen Pointer setzen damit das mit AddString geht usw.
Ich hoffe es ist verständlich!
Gruß Rudi
-
Wenn du mit Pointern solche Probleme hast, leg dir doch eine echte Membervariable über den Klassenassistenten an.
Strg+W
zweite Karteikarte
IDC_ADRESS_COMBO1 -> hinzufügen
Name eingebenAber wenn ich deinen Text richtig verstehe, hast du das schon gemacht, dann kannst du das mit m_cAdressCombo1 machen:
Ersetze einfach pComboBox-> in dem Beispiel durch m_cAdressCombo1. und schon geht das.
-
Um das ganze mal einfacher zumachen wäre es mir lieber es mal ohne if zu probieren. geht das so?
m_cAdressCombo1->AddString(pItem->ShowItemName())))
Aber wo wird jetzt mei CString übernommen in der ComboBox?
-
Okay, um ganz vorne anzufangen mach mal
m_cAdressCombo1.AddString("Hallo");
Wenn du jetzt dein Programm startest und die Combobox aufklappst, siehst du auch das "Hallo".
-
Das habe ich eben ausprobiert und vorher auch schon mal und dan bekomme ich folgende Fehlermeldung:
'AddString' : cannot convert parameter 1 from 'char [6]' to 'const unsigned short *'
Was habe ich falsch gemacht?
-
Hab eben einfach mal ne CString mit einem Text eingesetzt und es ging....
Sorry das ich so eillig geantwortet habe! Aber schon komisch hatte es vorher schon mal so und da gings net! Naja was solls.
Wie kann ich jetzt herausfindes was mein Benutzer gewählt hat?
-
Guck dir den zweiten Schnipsel von Esco an...
-
Habe es wir folgt probiert:
iIndex= m_cAdressCombo1->GetCurSel();
Aber es kommt ne fehlermeldung!
Was ist falsch?
-
Habe es wir folgt probiert:
iIndex= m_cAdressCombo1->GetCurSel();
Aber es kommt ne fehlermeldung!
Was ist falsch?
-
Rudi100 schrieb:
Hab eben einfach mal ne CString mit einem Text eingesetzt und es ging....
Sorry das ich so eillig geantwortet habe! Aber schon komisch hatte es vorher schon mal so und da gings net! Naja was solls.
Wie kann ich jetzt herausfindes was mein Benutzer gewählt hat?
ich hab dir oben 2 quellcodefragmente gepostet, der 2. ist dazu da rauszufinden, was der benutzer ausgewaehlt hat.
-GetCurSel() (get current selection - die aktuelle auswahl) gibt dir den index zurueck, der ausgewaehlt wurde.Esco
-
Welche Fehlermeldung?
Jede Wette, du hast da keine Zeigervariable...
-
Habe es wir folgt probiert:
iIndex= m_cAdressCombo1->GetCurSel();
Aber es kommt ne fehlermeldung!
Was ist falsch?
-
estartu_de schrieb:
Welche Fehlermeldung?
Jede Wette, du hast da keine Zeigervariable...
Da kenne ich mich leider net so aus!
Kannst du mir weiterhelfen?
-
estartu_de schrieb:
Okay, um ganz vorne anzufangen mach mal
m_cAdressCombo1.AddString("Hallo");
Wenn du jetzt dein Programm startest und die Combobox aufklappst, siehst du auch das "Hallo".
wenn du das so gemacht hast wie estartu_de es geschrieben hat, mit einem '.', dann musst du bei GetCurSel() auch einen punkt nehmen.
Esco
-
Vielen Dank es klappt!
Kann ich eigentlich bestimmen was in der ComboBox beim öffnen stehen soll! Also ich meine wenn ich jetzt mein Programm starte dann ist das Feld weis und erst bei einem Klick auf die Pfeiltaste kann ich sehen was drin steht. Ich möchte eine Zeile aber beim start drin stehen haben. Geht das?
Verständlich?
-
Das geht mit SetCurSel
Also z.B.m_cAdressCombo1.SetCurSel(0);
für den ersten Eintrag.
Schau doch einfach mal die Class-Members von CComboBox in der MSDN an. Wenn du eine Erklärung dort nicht verstehst hilft man dir lieber, als wenn du für alles gleich fragst.
Zu deinem Problem mit -> und .
Wenn du einen Zeiger hast nimmst du ->
(Eselsbrücke: Das zeigt auf die Funktion bzw. die Membervariable.)
Einen Zeiger hast du immer dann, wenn bei der Deklaration ein oder mehrere * zu finden sind.
Z.B.:void* pZeiger = NULL; void ** pZeigerAufZeiger = &pZeiger;
Ob die Leerzeichen vor oder hinter den * ist Geschmackssache.
Sonst nimmst du .
-
Erstmal vielen Dank!
Aber ich schaffe es immer noch net einen CString beim aufruf meines Dialogs in der Fläche der ComboBox zu stehen.
CString test = _T("Hallo");
CString test2=_T("Hallo du da");
CString test3=_T("guck mal");m_cAdressCombo1.SetCurSel(0);
m_cAdressCombo1.AddString(test);
m_cAdressCombo1.AddString(test2);Was habe ich falsch gemacht? Ich möchte das "Hallo" beim aufruf des Dialogs in der ComboBox steht. So wie auf dieser site wo man die unterschiedlichen Forum auswählen kann!
-
Vielen Dank an alle! Ich habe es geschafft!
Tolles Forum!
Melde mich bestimmt wieder!
Gruß Rudi