Combobox steuern



  • Ich habe folgendes Problem:

    Ich vergleiche 2 Strings und wenn die übereinstimmen soll in der combobox ein Eintrag ausgewählt werden. Wie kann ich das machen?



  • lol
    Für solche triviale Fragen gibts die MSDN!
    CComboBox::SetSel
    CString::Compare oder CString::CompareNoCase oder einfach den == operator ...



  • Ich habe gedacht es wäre mit SetCurSel möglich.

    if ((javaversion == javapath1) || (javaversion == javapath2))
        {
            m_ctlJava.SetCurSel(1);
    
        }
        else if ((javaversion == javapath3) || (javaversion == javapath4))
        {
            m_ctlJava.SetCurSel(2);
        }
    

    Die Einträge stehen schon. Es soll nur einer von beiden gewählt werden.
    Geht das nicht mit SetCurSel?



  • jo, stimmt, heisst bei CComboBox SetCurSel.Dein Problem wird wohl sein, dass du bei 1 zu zählen beginnst, der erste Eintrag in einer ComboBox hat aber den Index 0.



  • Ich habe es auch schon mit Null und eins probiert. Der wählt trotzdem nix aus.
    Ich mache im Oninit Dialog ein SetCurSel(0). Das dürfte damit doch aber nix zu tun haben, oder?

    ich finde keinen Fehler. Aber funktionieren tut es auch nicht.



  • Der Befehl stimmt so und es sollte funktionieren. Stehen wirklich Daten drin. Kannst sie in der GUI selektieren.



  • Ich kann sie von Hand selektieren. Es stehen genau 2 Sachen darin. Aus denen er auswählen soll. Aber er macht nix? Ich habe schon mehreres versucht, aber es tut sich nix.

    Aber noch eine andere Frage: Wie kann ich überprüfen, ob es eine Section in einer ini-Datei schon gibt?



  • Versuch mal die Funktion mit dem auswählen auf einen Button zu legen, rein zu testzwecken.
    Könnte sein, dass der die in der OnInitDialog nicht mag 😉



  • SetCurSel funktioniert auch in OnInitDialog.

    Poste mal dein Projekt ohne Release - und Debugordner auf einer Seite zum runterladen.



  • Habe leider keine Möglichkeit Hier mal der Code den es betrifft.

    void CFre_EinstellungDlg::OnSelchangeOeffnen() 
    {
    
        CComboBox* pComboBox = (CComboBox*) GetDlgItem(IDC_OEFFNEN);
        pComboBox->GetLBText(pComboBox->GetCurSel(),m_strOeffnen);
    
        CString javaversion;
        GetPrivateProfileString(m_strOeffnen,"Java-Version", NULL, javaversion.GetBuffer(500),500, home);
        javaversion.ReleaseBuffer(-1);
    
        CString javapath1 = javahome1 + "\\bin\\java.exe";
        CString javapath2 = javahome1 + "\\bin\\javaw.exe";
    
        CString javapath3 = javahome2 + "\\bin\\java.exe";
        CString javapath4 = javahome2 + "\\bin\\javaw.exe";
    
        if ((javaversion == javapath1) || (javaversion == javapath2))
        {
            m_ctlJava.SetCurSel(2);
    
        }
        else if ((javaversion == javapath3) || (javaversion == javapath4))
        {
            m_ctlJava.SetCurSel(3);
        }
    


  • Wieso holst du dir einen Zeiger auf eine Combobox wenn du bereits eine memberctrlvariable auf dise hast
    Wenn du nur 2 Einträhe hast warum willst du dann 3 + 4 (= index 2 + 3)selektieren.

    [ Dieser Beitrag wurde am 28.02.2003 um 12:01 Uhr von Unix-Tom editiert. ]

    [ Dieser Beitrag wurde am 28.02.2003 um 12:01 Uhr von Unix-Tom editiert. ]



  • Das Stand aus Testzwecken noch so da. Ich mache hier folgendes:

    Ich habe eine Combobox die aus der registrierung die Javaversionen herausliest. Wenn es die Version 1.3 gibt zeigt er diese in der Combobox an. Wenn es auch eine Version 1.4 gibt zeigt er die ebenfalls in der Kombobox an. Der Benutzer kann sich somit die Javaversion heraussuchen.

    In der ini-Datei speichere ich Einstellungen wie z.B. den Pfad der Javaversion.

    Wenn ich so eine Einstellung jetzt öffne, liest er den Pfad der Javaversion aus. Denn Vergleiche ich jetzt mit der aus der Registrierung. So weis ich welche Version in der Einstellung stand. Diese soll dann in der Kombobox angezeigt werden.



  • Mach mal einen Debug ob setcursel auch ausgeführt wird.



  • Also ich habe es mal im Debugger durch getestet. Er läuft durch die Schleife und führt SetCurSel auch aus


Anmelden zum Antworten