Icon in einer Liste nur in Zeile X???



  • Hy,

    Ich schreibe folgendermasen ein Icon in meine Liste:

    CImageList *TreeImageList = new CImageList;
    	HICON  hIcon = NULL; 
    	TreeImageList->Create(16, 16, TRUE, 4, 4);      // Icon für geänderte Daten
    	hIcon = AfxGetApp()->LoadIcon(IDI_ICON1); 
    	TreeImageList->Add(hIcon); 
    if(RegionID == 1 && checkae == true) 
    			{
    				iRec = c_ListNord.InsertItem(0,idm,0);
    				c_ListNord.SetItemText(0,1,idmm);
    				c_ListNord.SetImageList(TreeImageList,LVSIL_SMALL);  
    			}
    

    Wie kann ich dem Programm mitteilen das ich das Icon nur in der Xten Zeile haben möchte???

    MFG

    RS



  • Hallo !

    Hier mal ein Ausschnitt aus meinem Testprojekt. Es erzeugt vier Einträge mit Icon 2, vier Einträge ohne Icon und vier Einträge mit Icon 1. Vielleicht kannst du dir ja abgucken, was du brauchst...

    Im Header habe ich:

    CImageList *TreeImageList;
    

    Im Konstruktor habe ich:

    TreeImageList = new CImageList;
    

    Im Destruktor habe ich:

    delete TreeImageList;
    

    In OnInitDialog() habe ich:

    m_Liste.InsertColumn(0, "eins", LVCFMT_LEFT, 100, -1);
    
    HICON  hIcon = NULL;  
    TreeImageList->Create(16, 16, TRUE, 0, 0);
    hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);
    TreeImageList->Add(hIcon);					// Index 0 in der Bilderliste (Icon 1)
    hIcon = AfxGetApp()->LoadIcon(IDI_ICON2);
    TreeImageList->Add(hIcon);					// Index 1 in der Bilderliste  (Icon 2)
    
    m_Liste.SetImageList(TreeImageList, LVSIL_SMALL);
    
    for(int i = 0; i < 4; ++i)
    	m_Liste.InsertItem(i, "test 1", 0);	// 3. Paramenter ist der Index von der Bilderliste "TreeImageList"
    
    for(i = 0; i < 4; ++i)
    	m_Liste.InsertItem(i, "test 2", -1);	// kein Icon
    
    for(i = 0; i < 4; ++i)
    	m_Liste.InsertItem(i, "test 3", 1);	// 1. Parameter ist der Index des Eintrages in dem ListCtrl
    

    Tschüss



  • Irgendwie komme ich nicht weiter.
    Ich poste mal meinen Code.
    In diesem teil lese ich daten aus einer MDB Datei.
    Nach dem einlesen des Datensatzes wird dieser auf eine Änderung geprüft.
    Wenn eine änderung erfolgt ist dann soll der eintrag in der liste mit einem Icon angezeigt werden.
    ansonsten nur der Eintrag.

    CImageList *TreeImageList = new CImageList;
    	HICON  hIcon = NULL; 
    	TreeImageList->Create(16, 16, TRUE, 0, 0);      // Icon für geänderte Daten
    	hIcon = AfxGetApp()->LoadIcon(IDI_ICON1); 
    	TreeImageList->Add(hIcon);
    
    	c_ListNord.SetImageList(TreeImageList,LVSIL_SMALL); 
    	c_ListSued.SetImageList(TreeImageList,LVSIL_SMALL); 
    
    	CDatabase database;
    
    	// Build ODBC connection string
    	sDsn.Format("ODBC;DRIVER={%s};DSN='';DBQ=%s",sDriver,sFile);
    	TRY
    	{
    		// Open the database
    		database.Open(NULL,false,false,sDsn);
    	//....
    		while( !recset.IsEOF() )
    		{
    			bool checkae = false;
    			CString idm, idmm, gid;
    			recset.GetFieldValue("NL",idm);
    			recset.GetFieldValue("NLS",idmm);
    
    			checkae = aenderungch(RegionID,idm);
    			if(RegionID == 1 && checkae == false)//NORD
    			{
    			c_ListNord.InsertItem(iRec,idm,-1);
    			c_ListNord.SetItemText(iRec,1,idmm);
    			}
    			if(RegionID == 1 && checkae == true) 
    			{
    				c_ListNord.InsertItem(iRec,idm,0);
    				c_ListNord.SetItemText(iRec,1,idmm);
    			}
    			if(RegionID == 3 && checkae == false)//SÜD
    			{
    			iRec = c_ListSued.InsertItem(iRec,idm,-1);
    			c_ListSued.SetItemText(iRec,1,idmm);
    			}
    			if(RegionID == 3 && checkae == true)
    			{
    			iRec = c_ListSued.InsertItem(iRec,idm,0);
    			c_ListSued.SetItemText(iRec,1,idmm);
    
    			}
    			iRec++;
    			recset.MoveNext();
    		}
    		// Close the database
    		database.Close();
    
    	}
    	CATCH(CDBException, e)
    	{
    
    	}
    	END_CATCH;
    	delete TreeImageList;
    
    return true;
    

    Ich hoffe jemand findet den Fehler.

    Danke

    RS



  • Ich habs!
    Ich habe delete an der falschen stelle aufgeruhfen.

    Danke RS


Anmelden zum Antworten