2010-04-09 18 views
11

Wie kann ich eine CListCtrl erstellen, um die Breite ihrer Spalten automatisch zu ändern? Wenn ein Element in der Liste zu lang wird, verschwindet das Backend normalerweise aus der Ansicht und der Benutzer muss die Breite der entsprechenden Spalte manuell ändern. Gibt es eine Möglichkeit, dies durch Code zu tun?Automatische Größenänderung von Spaltenbreiten in einer CListCtrl

Antwort

12

die Spalten automatisch Ändern der Größe ist einfach:

for(int i = 0;i < pListCtrl->GetHeaderCtrl()->GetItemCount();++i) 
    pListCtrl->SetColumnWidth(i,LVSCW_AUTOSIZE_USEHEADER); 

Diese Spalten optimieren.

+0

Hey, ich habe es versucht und es scheint gut zu funktionieren :) :) Vielen Dank für die Antwort dwo: D – Isuru

+0

Eine kleine Frage dwo, ich habe noch nie von HeaderControl gehört. Was genau ist es ??? Vielen Dank !!! – Isuru

+0

Das Header-Steuerelement ist der obere Teil des Listensteuerelements mit den darin enthaltenen Spaltenüberschriften. – dwo

1

Haben Sie die Option "Kein Scroll"? Standardmäßig (Option "Kein Bildlauf" aus), wenn ein Element zu lang wurde, würde eine Bildlaufleiste erscheinen.

1

Ich nehme an, Sie meinen ein Listensteuerelement im Berichtsmodus? Leider gibt es keine Möglichkeit, Spalten automatisch zu skalieren. Was Sie tun können (was ich an einigen Stellen tue) ist, dass Sie die Breite von Spalten berechnen, wenn Sie Elemente eingeben, dann behandeln Sie WM_SIZE und ändern Sie die Größe der Spalten. Dies führt jedoch dazu, dass Änderungen, die der Benutzer vorgenommen hat, verloren gehen. Daher benötigen Sie möglicherweise einen besseren Algorithmus wie Tracking, wenn der Benutzer Änderungen vorgenommen hat, wenn er die Größe nicht geändert hat. Aus UX-Perspektive ist es nicht sehr nett, ich verwende es nur in einer bestimmten Anzahl von Situationen, in denen das Verhalten im Kontext der restlichen Benutzeroberfläche sinnvoll ist.

+0

Ja das ist genau das, was ich meinte. Danke für die Antwort, wenn ich keinen passenden Algo bekomme, handle ich einfach mit OnSize() um die Größe manuell zu ändern und bitte den Leser, die Größe des Fensters zu ändern. – Isuru

Verwandte Themen