如题!哪样仁兄能帮帮小弟!
解决方案 »
- delphi 2009 如何读取和保存字符串到流
- 这个原因也会导致,"无法更新定位行.一些值在最后读取的时候已更改.",不知道大家知道么?? 怎么解决,大家出个点子.
- 三层及系统问题请教
- delphi7程序移植到windows7时报错
- FastReport 问题
- 使用DBGRID有如下几个问题....
- 怎样让edit.text输入1到9时,自动变为01,02....?????
- 一个delphi初学者的求助!
- 怎样在dbgrid里选一个字段使其值自动弹到edit里?
- 关于的Socket的送分题
- 在dbctrlgrid中如何单独对指定的数据显示控件设置背景色?(半天没弄出来,急)
- 怎么在程序里判断Image控件有没有加载图片?
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;
Result := CallWindowProc(nil, hwnd,uMsg, wParam, lParam);
Result := CallWindowProc(nil, hwnd,uMsg, wParam, lParam);这句没有错!
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;
参考一下,自己再做修改
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;