如何改变ListView中的子窗口ListColumns的颜色,它一直是灰色的
2009-01-04 16:47
621 查看
如何改变ListView中的子窗口ListColumns的颜色,它一直是灰色的 VCL组件开发及应用
http://www.delphi2007.net/DelphiVCL/html/delphi_20061222091101203.html
我在C++ Builder中找到一个答案,说是要重画子窗口,但是我翻译成Delphi后调用没有成功。谁有用Delphi做的源代码,贴一下
给你一个关于自定义LISTVIEW风格的专题, 很不错的,有范例源码
http://www.delphidabbler.com/articles?article=16
那里给出的示例好像没有修改ListColumns颜色的呀,我想要将ListView的Columns的底色换一种颜色,比如蓝色之类的
FHeaderInstance: Pointer; //ListView Colums的实例
FDefHeaderProc: Pointer; //ListView Colums的主函数
FHeaderHandle: HWND; //句柄
////////////////////
初始化:
FHeaderInstance := Classes.MakeObjectInstance(HeaderWndProc); //
//////////////
//把Columns 的主函数子类化到 FDefHeaderProc
procedure TMyListView.WMParentNotify(var Message: TWMParentNotify);
begin
inherited;
with Message do
if (Event = WM_CREATE) and (FHeaderHandle = 0) then
begin
FHeaderHandle := ChildWnd;
FDefHeaderProc := Pointer(GetWindowLong(FHeaderHandle, GWL_WNDPROC));
SetWindowLong(FHeaderHandle, GWL_WNDPROC, LongInt(FHeaderInstance));
end;
end;
////////////
消息处理
procedure TFSSkinListView.HeaderWndProc(var Message: TMessage);
procedure DefaultProc;
begin
with Message do
Result := CallWindowProc(FDefHeaderProc, FHeaderHandle, Msg, WParam, LParam);
end;
begin
with Message do
begin
case Msg of
WM_ERASEBKGND: Result:=1;
WM_LBUTTONDOWN:;
WM_LBUTTONUP:;
WM_MOUSELEAVE:;
WM_MOUSEMOVE:;
WM_PAINT:;
begin
在此进行你要的绘画.
end;
HDM_LAYOUT:
end
else
DefaultProc;
end;
end;
procedure TFSSkinListView.HeaderWndProc(var Message: TMessage);
///////
更正
TMyListView.HeaderWndProc(var Message: TMessage);
只有重新创建新类才可以更换ListColumns的颜色吗,有没有其他的方法呀
http://www.delphi2007.net/DelphiVCL/html/delphi_20061222091101203.html
我在C++ Builder中找到一个答案,说是要重画子窗口,但是我翻译成Delphi后调用没有成功。谁有用Delphi做的源代码,贴一下
给你一个关于自定义LISTVIEW风格的专题, 很不错的,有范例源码
http://www.delphidabbler.com/articles?article=16
那里给出的示例好像没有修改ListColumns颜色的呀,我想要将ListView的Columns的底色换一种颜色,比如蓝色之类的
FHeaderInstance: Pointer; //ListView Colums的实例
FDefHeaderProc: Pointer; //ListView Colums的主函数
FHeaderHandle: HWND; //句柄
////////////////////
初始化:
FHeaderInstance := Classes.MakeObjectInstance(HeaderWndProc); //
//////////////
//把Columns 的主函数子类化到 FDefHeaderProc
procedure TMyListView.WMParentNotify(var Message: TWMParentNotify);
begin
inherited;
with Message do
if (Event = WM_CREATE) and (FHeaderHandle = 0) then
begin
FHeaderHandle := ChildWnd;
FDefHeaderProc := Pointer(GetWindowLong(FHeaderHandle, GWL_WNDPROC));
SetWindowLong(FHeaderHandle, GWL_WNDPROC, LongInt(FHeaderInstance));
end;
end;
////////////
消息处理
procedure TFSSkinListView.HeaderWndProc(var Message: TMessage);
procedure DefaultProc;
begin
with Message do
Result := CallWindowProc(FDefHeaderProc, FHeaderHandle, Msg, WParam, LParam);
end;
begin
with Message do
begin
case Msg of
WM_ERASEBKGND: Result:=1;
WM_LBUTTONDOWN:;
WM_LBUTTONUP:;
WM_MOUSELEAVE:;
WM_MOUSEMOVE:;
WM_PAINT:;
begin
在此进行你要的绘画.
end;
HDM_LAYOUT:
end
else
DefaultProc;
end;
end;
procedure TFSSkinListView.HeaderWndProc(var Message: TMessage);
///////
更正
TMyListView.HeaderWndProc(var Message: TMessage);
只有重新创建新类才可以更换ListColumns的颜色吗,有没有其他的方法呀
相关文章推荐
- 【win7系统中如何改变半透明窗口的颜色】
- 如何在ctrllist控件上改变制定的颜色?
- WPF中ListView如何改变选中条背景颜色
- Android如何设置背景透明、开关输入法、改变标题栏颜色、layer-list
- WPF中ListView如何改变选中条背景颜色
- 如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
- 如何改变Android中 ListView的item被选中的颜色
- win7系统中如何改变半透明窗口的颜色(已使用Aero主题)
- 如何改变MATLAB中figure窗口的背景颜色
- CAknSettingItemList 如何改变 字体 颜色
- 如何改变 FMX ListView 颜色
- 如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
- 如何通过代码动态改变android的窗口背景颜色
- WPF中ListView如何改变选中条背景颜色
- 如何改变视图窗口的颜色
- 如何实现table背景色随鼠标移动改变颜色?
- 使用电脑时保护眼睛:改变窗口颜色保护我们的眼睛
- ListView点击后改变item颜色的Demo
- JS点击按钮如何改变网页的背景颜色
- ListView 点击Item的时候,改变文字颜色和背景色