How to set a flat style for TListView header
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