社区
Delphi
帖子详情
急!急!急!ListView的标题(Column)怎么改变颜色?
smallyan
2004-06-29 09:20:43
如题!哪样仁兄能帮帮小弟!
...全文
273
8
打赏
收藏
急!急!急!ListView的标题(Column)怎么改变颜色?
如题!哪样仁兄能帮帮小弟!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jackie168
2004-09-29
打赏
举报
回复
修改樓上得來的://效果好像還不如沒改過的,呵呵~~
uses CommCtrl;
procedure TForm1.Button1Click(Sender: TObject);
var
dc:hdc;
r1,r2:trect;
hhwnd:Thandle;
begin
hhwnd := SendMessage(listview1.Handle, LVM_GETHEADER, 0, 0);
dc:=getwindowdc(hhwnd);
getwindowrect(hhwnd,r1);
offsetrect(r1,-r1.Left,-r1.Top);
r2:=r1;
r2.Right:=listview1.Columns[0].Width;
fillrect(dc,r2,getstockobject(LTGRAY_BRUSH));
r2.Left:=r2.Right;
r2.Right:=r2.Left+listview1.Columns[1].Width;
fillrect(dc,r2,getstockobject(GRAY_BRUSH));
releasedc(hhwnd,dc);
end;
fj218
2004-09-29
打赏
举报
回复
引用CommCtrl单元,listview1的viewstyle设为vsReport。
procedure TForm1.Button1Click(Sender: TObject);
var
dc:hdc;
r1,r2:trect;
begin
hhwnd := SendMessage(listview1.Handle, LVM_GETHEADER, 0, 0);
dc:=getwindowdc(hhwnd);
getwindowrect(hhwnd,r1);
offsetrect(r1,-r1.Left,-r1.Top);
r2:=r1;
r2.Right:=listview1.Columns[0].Width;
fillrect(dc,rc2,getstockobject(white_brush));
r2.Left:=r2.Right;
r2.Right:=r2.Left+listview1.Columns[1].Width;
fillrect(dc,rc2,getstockobject(white_brush));
releasedc(hhwnd,dc);
end;
参考一下,自己再做修改
jackystar
2004-09-29
打赏
举报
回复
这个画出来都是黑色?
有人搞定没?
aushqh
2004-08-03
打赏
举报
回复
这个会一直闪动,关注中。。。。
juliens
2004-07-28
打赏
举报
回复
把GetClientRect(hwnd, Rect);这句改成Windows.GetClientRect(hwnd, Rect);就行了!
Result := CallWindowProc(nil, hwnd,uMsg, wParam, lParam);这句没有错!
bluesky23
2004-07-28
打赏
举报
回复
学习
fei19790920
2004-06-29
打赏
举报
回复
procedure SetListHeadColor(hListView:HWND; Color:TColor);
var
hHeader: HWND;
OldProc: FARPROC;
function NewHeadProc(hwnd:HWND; uMsg:UINT;
wParam:WPARAM; lParam:LPARAM): Longint; stdcall;
var
Rect:TRect;
Canvas: TCanvas;
Bmp: TBitmap;
begin
Result := CallWindowProc(OldProc, hwnd,
uMsg, wParam, lParam);
if uMsg = WM_PAINT then
begin
GetClientRect(hwnd, Rect);
Bmp := TBitmap.Create;
Bmp.Width := Rect.Right;
Bmp.Height := Rect.Bottom;
Canvas := TCanvas.Create;
Canvas.Handle := GetDC(hwnd);
Bmp.Canvas.CopyRect(Rect, Canvas, Rect);
Bmp.Transparent := true;
Bmp.TransparentColor := clBtnFace;
Canvas.Brush.Color := Color;
Canvas.Rectangle(Rect);
Canvas.Draw(0, 0, Bmp);
ReleaseDC(hwnd, Canvas.Handle);
Canvas.Free; Bmp.Free;
end;
end;
begin
hHeader := FindWindowEx(hListView, 0,
'SysHeader32', Nil);
OldProc := FARPROC(SetWindowLong(hHeader,
GWL_WNDPROC, LongInt(@NewHeadProc)));
InvalidateRect(hHeader, Nil, FALSE);
end;
smallyan
2004-06-29
打赏
举报
回复
为什么会报错
错在这行!
Result := CallWindowProc(nil, hwnd,uMsg, wParam, lParam);
listview
基本用法
2. **
改变
行
颜色
**:可以通过自定义绘制事件 `CustomDrawItem`
改变
行的
颜色
。 ```pascal procedure TForm1.
ListView
1CustomDrawItem(Sender: TCustom
ListView
; Item: TListItem; State: TCustomDrawState; var ...
画
listview
头部
2. **自定义列头样式**:默认情况下,
ListView
的列头是系统提供的,但可以通过重写OnDraw
Column
Header事件来
改变
其外观。在PAS文件中,我们可以添加以下代码: ```delphi procedure TForm1.
ListView
1...
改变
CListCtrl、CHeaderCtrl 高度、字体、
颜色
和背景
4. **背景**:除了
颜色
,背景也可以通过设置刷子来
改变
。你可以创建一个自定义的`HBRUSH`,然后在`WM_CTLCOLORHDR`消息的处理函数中返回它。 在实际开发中,这些操作通常结合在一起,以创建独特且吸引人的用户界面...
Android开发技巧总汇(3)
有时候,简单的
改变
ListView
的背景
颜色
并不足够,可能会遇到以下问题:当用户滑动
ListView
或者点击空白区域时,所有未被选中的项目都会变为默认的黑色或其他
颜色
,从而破坏整体的设计效果。这是因为Android系统默认...
vs2010 基于MFC实现ListCtrl的显示和写入
为了
改变
ListCtrl中某个项的字体或背景
颜色
,我们需要使用SetItemState函数。这个函数可以设置项的状态,其中包括高亮、选中等。对于
颜色
的修改,我们需要使用LVM_SETITEMSTATE消息,结合LVIS_CUT、LVIS_DROPHILITED...
Delphi
5,928
社区成员
262,931
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章