dynamische Anzahl der Auswahl in einer ComboBox



  • Hallo Leute!

    Ist es möglich die Anzahl der Selektionsmöglichkeiten in einer Combobox zu steuern? Ich würde gerne zuerst ein einem Feld festlegen wieviele Werte es geben soll und die sollen anschliessen in der Combobox zur Auswahl stehen.
    Beispiel: Anzahlfeld "Frequenzzahl 8" im ComboBox kommen da 8 Frequenzen zur Auswahl, zuerst alle auf Null. Ist das möglich?!

    Danke!

    Schöne Grüsse,
    Patrick



  • Klar ist das möglich,

    Die Anzahl legst du fest, je nachdem, wie viele Elemente du einfügst mit SetCurSel( int nSelect ) und GetCurSel() setzt du die aktuelle Selektion bzw liest sie aus. ambesten einfach mal in der MSDN bei CComboBox nachschauen.



  • Danke! Ich hab jetzt ein anderes Problem. Meine ComboBox ist zwar da aber ich seh kein dropdown feld. ich kann lediglich via Tastatur Cursor zu den einzelnen elemten switchen??? Bei einem anderen Dialog klappts prima??



  • Im Resourceneditor einfach die Box aufklappen und dann die Größe des Aufgeklapten Zustandes festlegen. Die Größe, die beim Create angegeben wird ist nur die Größe des unmaximierten Controls.



  • Danke hab ich auch gerade gemerkt. Bist Du sicher dass man mit set/getcursel, die anzahl der items in der Combobox bestimmen kann. Ich hab da nur was von selektion gelesen. Ich müsste ja die dynamisch bestimmen können. und dann schon werte zuweisen. In einer behandlungsroutine sag ich, dass ich 12 items brauche und die haben werte 123;155.1;123.33 usw.

    // The pointer to my combo box.
    extern CComboBox* pmyComboBox;
    
    // Select the next item of the currently selected item 
    // in the combo box.
    int nIndex = pmyComboBox->GetCurSel();
    int nCount = pmyComboBox->GetCount();
    if ((nIndex != CB_ERR) && (nCount > 1))
    {
       if (++nIndex < nCount)
          pmyComboBox->SetCurSel(nIndex);
       else
          pmyComboBox->SetCurSel(0);
    }
    
    // The pointer to my combo box.
    extern CComboBox* pmyComboBox;
    
    // Select the last item in the combo box.
    int nCount = pmyComboBox->GetCount();
    if (nCount > 0)
       pmyComboBox->SetCurSel(nCount-1);
    


  • Kann ich nicht mit SetWindowText() die Werte behandeln, welche ich unter DATA in der rc des ComboBox habe? Normalerweise kann ich doch damit fast alle Steuerlemente anspreche und verändern, oder?! DANKE!



  • wäre es nicht das hier?!

    // The pointer to my combo box.
    extern CComboBox* pmyComboBox;
    
    // Add 20 items to the combo box.
    CString str;
    for (int i=0;i < 20;i++)
    {
       str.Format(_T("item string %d"), i);
       pmyComboBox->AddString( str );
    }
    

    beim build bekomme ich immer eine linker fehler mit dem pointer? Eine Ahnung?!



  • ich bekommen immer wenn ich den Code von oben kompiliere, diese fehlermeldung:

    sm091 error LNK2001: unresolved external symbol "class CComboBox * pmyComboBox" (?pmyComboBox@@3PAVCComboBox@@A)
    sm091 fatal error LNK1120: 1 unresolved externals

    ????
    Irgendwelche Ideen?



  • ok ich hab das nun so gelöst.
    m_number_freq ist die anzahl items die ich in meiner Combo Box hab und die übergebe ich bei jedem change event an die Combo Box

    void Csm091Dlg::OnEnChangeNumberFreq()
    {
    
        m_freq.ResetContent();
        UpdateData(TRUE);
        CString str;
        for (int i=0; i< m_number_freq ;i++)
        {
            str.Format(_T("item string %d"), i);
            m_freq.AddString( str );
        }
    
    }
    


  • Na, mal ganz ruhig irgendwann muß man ja auch mal Mittag essen 🙂

    ich bekommen immer wenn ich den Code von oben kompiliere, diese fehlermeldung:
    sm091 error LNK2001: unresolved external symbol "class CComboBox * pmyComboBox" (?pmyComboBox@@3PAVCComboBox@@A)
    sm091 fatal error LNK1120: 1 unresolved externals

    Ja, er weiß scheinends nichts von deiner

    extern CComboBox* pmyComboBox;

    Warum greifst du eigentlich mit extern darauf zu. Ich nehme an, du hast pmyComboBox irgendwo als Member angelgt in einer von CDialog abgeleiteten Klasse. Also brauchst du, wenn dem so ist einfach nur mit pmyComboBox-> auf alle Memberfkt. zuzugreifen.

    Deine Lösung unten ist auch OK. Viele Wege führen nach Rom....


Anmelden zum Antworten