delphi2007 教程

delphi2007 教程

首页 新随笔 联系 聚合 管理
  1013 Posts :: 0 Stories :: 28 Comments :: 0 Trackbacks
如何改变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的颜色吗,有没有其他的方法呀

posted on 2009-01-04 16:53 delphi2007 阅读(582) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。