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");
    

Anmelden zum Antworten