2016-04-11 14 views
0

Ist das Standardverhalten für CListCtrl nur die Anzahl der Zeilen, die derzeit mit einem leeren ausgegrauten Bereich darunter gefüllt sind?CListCtrl Zeigt CListCtrl nur gefüllte Zeilen an?

In meiner Liste habe ich eine variable Anzahl von Einträgen in einem festen Anzeigebereich. Wenn es mehr Einträge gibt als der Anzeigebereich halten kann, ist es in Ordnung, der vertikale Schieberegler erscheint und alles wird korrekt angezeigt. Wenn ich Einträge lösche, so dass jetzt nicht genug Platz ist, um den Anzeigebereich auszufüllen, wird der leere Bereich am unteren Rand ausgegraut, ohne Zellengitter.

Ich möchte den Anzeigebereich als ein komplettes Zellengitter festgelegt halten. Ich kann diesen Bereich mit leeren Zeilen berechnen und auffüllen, wenn es sein muss, aber ich hätte nicht erwartet, dass dies das Standardverhalten ist. Ich hätte erwartet, dass der gesamte Client-Bereich der CListCtrl permanent als leeres Zellenraster angezeigt wird, wobei die korrekte Anzahl der Einträge oben angezeigt wird.

Muss ich das manuell behandeln oder gibt es vielleicht eine Eigenschaft der CListCtrl, die ich nicht einstelle?

+0

Nicht sicher, ob ich alles verstanden habe, könntest du ein paar Bilder posten? –

+0

Sie fragen nach sehr peinlichem Standardverhalten. Was sollte das Standardverhalten sein, wenn der Clientbereich kein Vielfaches der Zellenhöhe ist? Sollte der übrig gebliebene Platz in diesem Fall ausgegraut sein? Sollte das Steuerelement eine Teilzeile anzeigen, ohne dass eine vertikale Bildlaufleiste angezeigt wird? Soll es eine Teilreihe mit einer vertikalen Bildlaufleiste anzeigen? Wie sollte sich die Bildlaufleiste in diesem Fall verhalten? Nichts davon ist sehr intuitiv, und das implementierte Standardverhalten ist wirklich der Weg der geringsten Überraschung. – IInspectable

+0

Ich glaube, du verstehst falsch, was ich meinte. Ich spreche nicht über die Teilreihe, die am unteren Rand übrig bleiben könnte, ich spreche von allem Raum, der momentan nicht mit Daten gefüllt ist. Wenn ich eine CListCtrl habe, die 40 Zeilen anzeigt und es nur die oberen 10 mit Daten gibt, sind die 30 Zeilen darunter nur ein grauer Block, der dem Dialoghintergrund entspricht. Ich bin nicht sicher, wie diese Seite Bilder verarbeitet, aber ich habe einen Screenshot auf Dropbox gehostet, um zu zeigen, was ich meine: [link] (https://www.dropbox.com/s/i5rbfpfzfetpic/ShortList.jpg?dl=0) – Bordonbert

Antwort

0

Was Sie beschrieben haben, ist das Standardverhalten der Listenansicht:

List View control

Hier ist der relevante Code-Fragment:

m_List.InsertColumn(0, L"Col 1", 0, 100); 
m_List.InsertColumn(1, L"Col 2", 0, 100); 
m_List.InsertItem(0, L"Item 1"); 
m_List.InsertItem(1, L"Item 2"); 
ListView_SetExtendedListViewStyle(m_List, LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT); 

Sie müssen nur sicherstellen, dass Sie verwenden die aktuelle Version der allgemeinen Steuerelemente.

+0

Danke für diese Info Vlad, es ist, was ich fürchtete, könnte der Fall sein. Scheint so, als ob nur mein alterndes Setup nicht mehr zuverlässig ist. Ich muss vorsichtig mit diesem sein. – Bordonbert

Verwandte Themen