Header in der ListView



  • Hallo ,

    bin gerade dabei ein paar Informationen in der ListView anzuzeigen.

    Das Problem ist , ich weiß nicht wie ich den Header ( ListViewKopf - wo die
    Bezeichnungen der Spalten stehen ) aufsetzen kann.

    Danke im voraus.

    Gruß Silke



  • Dazu gibt es die Methode InsertColumn der Klasse CListCtrl.
    Eine Referenz auf das CListCtrl-Object der ListView bekommst du mit GetListCtrl()



  • Hallo Mathe,

    danke für deine Antwort.

    Ich habe es gemacht , leider werden die Spaltennamen (Überschriften ) im Header nicht sangezeigt.

    An was kann es liegen ?

    Gruß Silke



  • Hallo Mathe,

    danke für deine Antwort.

    Ich habe es gemacht , leider werden die Spaltennamen (Überschriften ) im Header nicht angezeigt.

    An was kann es liegen ?

    Gruß Silke



  • Hallo Silke, der Style des CListViews muss LVS_REPORT sein, sonst kriegst du die header nicht angezeigt.
    Mach in deiner PreCreateWindow Funktion einfach folgendes:

    BOOL CToDoListView::PreCreateWindow(CREATESTRUCT& cs) 
    {
    	// TODO: Speziellen Code hier einfügen und/oder Basisklasse aufrufen
    	cs.style |= LVS_REPORT;	// <- Einfügen
    	return CListView::PreCreateWindow(cs);
    }
    


  • Hallo Günni,

    hab's gemacht, trotzdem funktioniert's nicht.
    Ich poste mal mein Code:

    Ich habe ein Steuerelement: List Control
    Habe eine neue Klasse angelegt : CMyListView die ich von der Classe CListView
    abgeleitet habe.
    In der Klasse CMyListView habe ich die Methode PreCreateWindow( CREATESTRUCT& cs ) überschrieben .

    BOOL CMyListView::PreCreateWindow( CREATESTRUCT& cs ) 
    { 
        cs.style |= LVS_REPORT;    
    
        return CListView::PreCreateWindow( cs ); 
    }
    

    Für das < List Control > habe ich eine Member angelegt :
    CMyListView m_lvListView_Dateien;

    Und so setze ich den Header und es funktioniert nicht.

    CListCtrl& poHeader = m_lvListView_Dateien.GetListCtrl();
    poHeader.InsertColumn( 0 , "AAAAAAA" , LVCFMT_CENTER, 80 );
    poHeader.InsertColumn( 1 , "BBBBBB" , LVCFMT_CENTER, 80 );
    poHeader.InsertColumn( 2 , "CCCCCC" , LVCFMT_CENTER, 80 );
    poHeader.InsertColumn( 3 , "DDDDDD" , LVCFMT_CENTER, 80 );
    

    Ich habe so ein Gefühl dass bei den Eigenschaften , noch was eingestellt werden muss.

    Aber was ?

    Danke.

    Gruß Silke



  • Hallo , habe selber herausgefunden.

    habe bei den Eigenschaften
    Ansicht auf Bericht umgeschaltet.

    Eigentlich habe ich die Eigenschaft mit dem Übeschreiben der Methode:
    BOOL CMyListView::PreCreateWindow( CREATESTRUCT& cs ) eingestellt.

    Aber es hat trotzdem nicht geklappt.

    Nur nach dem Umstellen der Eigenschaft auf Bericht klappt es.
    Komisch ....

    Danke.

    Gruß Silke



  • Habe leider noch ein Problem ,

    ich kann den Header mit 4 Spalten anzeigen , aber ich kann keine Zeilen
    mit Werten füllen.

    Anbei mein Code:

    CListCtrl& poHeader = m_lvListView_Dateien.GetListCtrl();
    	poHeader.InsertColumn( 0 , "AAAAAAA" , LVCFMT_CENTER, 80 );
    	poHeader.InsertColumn( 1 , "BBBBBB" , LVCFMT_CENTER, 80 );
    	poHeader.InsertColumn( 2 , "CCCCCC" , LVCFMT_CENTER, 80 );
    	poHeader.InsertColumn( 3 , "DDDDDD" , LVCFMT_CENTER, 80 );
    
    	LV_ITEM item; 
    	item.mask = LVIF_TEXT; 
             item.iItem=0;
             item.pszText = "Bla";
             item.iSubItem=1;
             int itemNr = poHeader.InsertItem( &item );
    
             poHeader.SetItem(&item);
    

    Was mache ich falsch ?

    Gruß Silke

    Edit von estartu_de: Ich habe mal die Code-Tags nachgebessert. Bitte nutze sie, das erleichtert uns das Lesen. Lies mal: sfds


Anmelden zum Antworten