CListCtrl macht, was es will!! HIIILFE!
-
Hallo zusammen!
Ich schreibe gerade ein simples Windowsprogramm, zum Verwalten von Terminen.
Ein Dialog hat die Daten einer Datenbank (MySQL) übergeben bekommen und soll diese fein säuberlich in eine Liste schreiben (CListCtrl). Der entsprechende Code sieht wie folgt aus:BOOL CMyDatesDlg::OnInitDialog() { CDialog::OnInitDialog(); m_List.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_HEADERDRAGDROP); m_List.InsertColumn(0, "Datum", LVCFMT_LEFT, 65); m_List.InsertColumn(1, "Zeit", LVCFMT_LEFT, 65); m_List.InsertColumn(2, "Beschreibung", LVCFMT_LEFT, 200); if(!(myres == NULL)) { MYSQL_ROW row; for(int i = 0; i < mysql_num_rows(myres); i++) { row = mysql_fetch_row(myres); m_List.InsertItem(i, _T(row[STARTDATE])); m_List.SetItemText(i, 1, _T(row[STARTTIME])); // m_List.SetItemText(i, 2, _T(row[DESCRIPTION])); } } }Doch, beim Ausführen sieht der Dialog so aus
<a href="http://mitglied.lycos.de/Schmierhox/screen.jpg">.Link.</a>, obwohl alle Daten in der Datenbank angegeben sind, d.h. keine Leereinträge!
Danke im Voraus.
Gruß Arno
-
<a href="http://mitglied.lycos.de/Schmierhox/screen.jpg">Link</a>
Also, es ist immer nur die letzte Zeile vollständig, bei allen anderen ist immer nur subItem 0, also, der erste Eintrag ausgefüllt!
-
Verwende den Returnwert von InsertItem bei SetItemText();
Devil
-
IMHO hast du auf Sortieren gestellt.
Bei Sortieren fügt InsertItem nicht an der Stelle ein welche du übergibst sondern schaut zuerst nach wo es hingehört. Dort dann INSERT und gibt den Index zurück. Du setzt jetzt aber ein eine fixe POS den ITEMTEXT wo deine Zeile aber nicht mehr ist.
Wie bereits gesagt: Verwende den Rückgabewert von InsertItem. Für InsertItem nimmst du GetItemCount(). Dann gibts nie Probleme.
-
YEEAHH!!! Vielen vielen Dank!