ComboBox Sortierung



  • Hallo,

    ich möchte in der ComboBox nur die Zahlen 1 - x (Anzahl der Dateien) anzeigen:

    class CFm1View : public CFormView

    Im Bereich:
    void CFm1View::OnInitialUpdate()

    m_AnzDat ist ein int Return-Wert.

    if (m_AnzDat>0)
    	{
    
    		for (int i = 1; i <= m_AnzDat;i++)
    		{	
    			m_Text.Format(_T( "%i"),i);
                               // Dies ist auch ein Versuch
    			m_CmbDir.FindString(0,m_Text);
                               // hier dachte ich muss der Index gelesen werden.
    			m_ListNr = m_CmbDir.AddString(m_Text);
                               // und hier setzen
    			m_CmbDir.SetItemData(m_ListNr,i);
    		}
    
    		m_CmbDir.SetCurSel(0);
    	}
    

    Das Ergebnis ist 1,10,11, usw. statt 1,2,3, usw.

    Was mache ich falsch?

    Es soll in dem Formular ' Datei Nr.: " 1" von 23 Dateien ' angezeigt werden.

    ' Datei Nr.: " 2" von 23 Dateien ' usw.

    Vielen Dank

    Gruß
    Fanker



  • Du solltest die Combobox nicht sortieren lassen (Kein CBS_SORT)! Der String "10" ist nunmal kleiner als der String "2", einfach weil die Strings stellenweise verglichen werden und die Länge erst einmal keine Rolle spielt.

    Viele Grüße,
    Michael



  • Vielen Dank Michael,

    ich habe die Sortierung nicht explizit angegeben.

    m_CmbDir.Dir(DDL_READONLY,_T(*.*))
    

    Wie verhindere ich eine Sortierung ?

    Danke für die Bemühungen.

    Gruß
    Fanker


  • Mod

    In einem NTFS System werden die Dateien automatsich nach Namen sortiert.

    Wenn Du eine eigene Sortierung willst soltest Du entwerder die Combobox selber befüllen, also selbst das Verzeichnis durchsuchen, oder WM_COMPAREITEM nutzen.

    http://msdn.microsoft.com/en-us/library/bb775921(vs.85).aspx



  • Vielen Dank.

    Es funktioniert :-).

    Gruß

    Fanker


Log in to reply