Prob bei SetItemText in ner ListCtrl
-
Hey Ho!
Ich versuch wie im folgenden Quelltext ersichtlich Mit SetItemText wenn die if-Abfrage zutrifft PAUSE in die ListCtrl zu schreiben. Wenn j durch eine konstante Zahl wie z.B. 10 ersetzt wird geht alles einwabdfrei... Soblad ich jedoch j (da es variabel sein muss) verwende wird nichts in die ListCtrl geschrieben...
Spalten sind bericht mit Inser Column eingefügt worden.CStringArray time; CString tmp, tmp2; GetRegTimeSet(&time); INT_PTR nItem = time.GetSize()-1; int nTmp = 0; int j = 1; int obsoletePairs=0; for (int i=0; i<nItem; i++) { //String zusammensetzten und einfügen tmp.Append(time[i]); if((tmp=="0" || tmp=="") || (time[i+1]=="0"||time[i+1]=="")) { i+=2; obsoletePairs++; j++; tmp=""; continue; } CString timeBegin; timeBegin=tmp; tmp.Append(" - "); i++; tmp.Append(time[i]); m_ctlListCtrl->InsertItem(i, tmp); tmp=""; //TODO:An Stelle J-obsoletePairs muss pause geschrieben werden if(timeBegin == m_strPause1 || timeBegin == m_strPause2 || timeBegin == m_strPause3) { for(int l=1; l<6; l++) { m_ctlListCtrl->SetItemText(j, l, "PAUSE"); } } j++; }
Gruß
Basti
-
Du brauchst j eigentlich gar nicht mitzählen. Wenn du die Funktion InsertItem ausführst, bekommst du den Index des eingefügten Elements zurück. Anhand diesem kannst du dann die SubItems mit SetItemText ausfüllen.
CListCtrl *pList = (CListCtrl*)GetDlgItem(IDC_LIST1); int zahl = 10; int nItem = 0; // Spalten einfügen pList->InsertColumn(0,"Spalte 1",LVCFMT_LEFT,100); pList->InsertColumn(0,"Spalte 2",LVCFMT_LEFT,100); // Wert hinzufügen nItem = pList->InsertItem(nItem,"Hallo",0); pList->SetItemText(nItem,1,"Welt"); // Wert hinzufügen nItem = pList->InsertItem(nItem,"Hallo",0); pList->SetItemText(nItem,1,"Welt");