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
-
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