Das List-View-Control erzeugen


Aus der VCL-Programmierung und selbst aus dem ganz normalen Windows-Alltag dürfte Ihnen die List-View bekannt sein. Wer den Explorer benutzt, kennt sie; diverse andere Programme verwenden sie auch. Und auch uns bereitet es keine Schwierigkeiten, ein solches Control in unseren nonVCL-Programmen einzusetzen.

Es gibt mehrere Darstellungsarten, von denen Sie eine bei der Erzeugung des Fensters (nichts anderes ist unser Control ja) angeben müssen:

Wert Bedeutung
LVS_REPORT Detailansicht inkl. Spaltenköpfe, die zur Sortierung benutzt werden können.
LVS_LIST Listenansicht
LVS_ICON Alle Einträge werden mit großen Symbolen dargestellt.
LVS_SMALLICON Alle Einträge werden mit kleinen Symbolen dargestellt.

Die Fensterklasse unseres Controls ist SysListView32 (bzw. die Konstante WC_LISTVIEW), und der Aufruf sieht dann so aus:

hLV     := CreateWindowEx(WS_EX_CLIENTEDGE,WC_LISTVIEW,nil,
  WS_VISIBLE or WS_CHILD or LVS_REPORT or LVS_EDITLABELS or
  LVS_SHOWSELALWAYS or LVS_SHAREIMAGELISTS,0,0,100,100,wnd,
  IDC_LV,hInstance,nil);


InitCommonControlsEx

Wenn Sie den Befehl "InitCommonControlsEx" verwenden, müssen Sie für die dwICC-Membervariable die Klasse ICC_LISTVIEW_CLASSES benutzen.


Spezielle Fensterstile

Eine List-View kann man mit besonderen Effekten ausstatten, als da wären:

usw. Im PSDK finden Sie unter den Stichworten "LVM_SETEXTENDEDLISTVIEWSTYLE" und "Extended List-View Styles" weitere Möglichkeiten, wobei aber zu beachten ist, dass einige davon nur unter bestimmten Versionen der "common controls" verfügbar sind.

Gesetzt werden solche erweiterten Stile aber in jedem Fall wie folgt:

SendMessage(hLV,LVM_SETEXTENDEDLISTVIEWSTYLE,0,
  LVS_EX_HEADERDRAGDROP or LVS_EX_FULLROWSELECT);