Mega Code Archive

 
Categories / Delphi / VCL
 

Flat header for TListView

Title: flat header for TListView In this tip I want to show how to change a style for header in TListView. For example, you may specify a flat header. You may do it so: 1. to get the header handle for the listview 2. to read the current style attributes for the header 3. to modify a style 4. to apply the new style 5. to invalidate the listview In the next code I show how to apply a flat style: const LVM_GETHEADER = LVM_FIRST + 31; var hHeader: THandle; style: dWord; begin {to get the header handle for the listview} hHeader := SendMessage(ListView1.Handle, LVM_GETHEADER, 0, 0); {to get the current style attributes for the header} style := GetWindowLong(hHeader, GWL_STYLE); {to toggle the HDS_BUTTONS style} style := style xor HDS_BUTTONS; {to apply the new style} SetWindowLong(hHeader, GWL_STYLE, style); {to invalidate the listview} SetWindowPos(ListView1.Handle, Form1.Handle, 0, 0, 0, 0, SWP_NOZORDER or SWP_NOSIZE or SWP_NOMOVE or SWP_DRAWFRAME) end; Note if you run a code in Windows XP with enabled XP theming, you'll not see any difference. But in all other cases you'll see a flat header for ListView