如题!哪样仁兄能帮帮小弟!

解决方案 »

  1.   

    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;
      

  2.   

    为什么会报错错在这行!
    Result := CallWindowProc(nil, hwnd,uMsg, wParam, lParam);
      

  3.   

    把GetClientRect(hwnd, Rect);这句改成Windows.GetClientRect(hwnd, Rect);就行了!
    Result := CallWindowProc(nil, hwnd,uMsg, wParam, lParam);这句没有错!
      

  4.   

    引用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;  
    参考一下,自己再做修改
      

  5.   

    修改樓上得來的://效果好像還不如沒改過的,呵呵~~
    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;