用Delphi自绘标题时.
碰到这样的问题:
按下鼠标时,标题又变成灰色.
var
dd: thandle;
f: Tcanvas;
bit: TBitmap;
begin
bit := TBitmap.Create;
bit.LoadFromFile('bk.bmp');
f := tcanvas.Create;
// dd := findwindowex(Rzlistview1.Handle, 0, 'SysHeader32', '');
dd := CommCtrl.ListView_GetHeader(RzListView1.Handle);
f.Handle := getwindowdc(dd);
f.Font.Color := clred;
f.TextOut(1, 1, 'hello');
//f.Draw(0, 0, bit);
f.Free;
end;
procedure TForm1.RzListView1AdvancedCustomDraw(Sender: TCustomListView;
const ARect: TRect; Stage: TCustomDrawStage; var DefaultDraw: Boolean);
beginend;procedure TForm1.RzListView1AdvancedCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage;
var DefaultDraw: Boolean);
beginend;
procedure TForm1.RzListView1AdvancedCustomDrawSubItem(
Sender: TCustomListView; Item: TListItem; SubItem: Integer;
State: TCustomDrawState; Stage: TCustomDrawStage;
var DefaultDraw: Boolean);
beginend;procedure TForm1.RzListView1CustomDraw(Sender: TCustomListView;
const ARect: TRect; var DefaultDraw: Boolean);
beginend;procedure TForm1.RzListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
beginend;procedure TForm1.RzListView1CustomDrawSubItem(Sender: TCustomListView;
Item: TListItem; SubItem: Integer; State: TCustomDrawState;
var DefaultDraw: Boolean);
beginend;
谁能解释一下,这几个函数在什么时候执行,有什么区别?
感激不尽.
碰到这样的问题:
按下鼠标时,标题又变成灰色.
var
dd: thandle;
f: Tcanvas;
bit: TBitmap;
begin
bit := TBitmap.Create;
bit.LoadFromFile('bk.bmp');
f := tcanvas.Create;
// dd := findwindowex(Rzlistview1.Handle, 0, 'SysHeader32', '');
dd := CommCtrl.ListView_GetHeader(RzListView1.Handle);
f.Handle := getwindowdc(dd);
f.Font.Color := clred;
f.TextOut(1, 1, 'hello');
//f.Draw(0, 0, bit);
f.Free;
end;
procedure TForm1.RzListView1AdvancedCustomDraw(Sender: TCustomListView;
const ARect: TRect; Stage: TCustomDrawStage; var DefaultDraw: Boolean);
beginend;procedure TForm1.RzListView1AdvancedCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage;
var DefaultDraw: Boolean);
beginend;
procedure TForm1.RzListView1AdvancedCustomDrawSubItem(
Sender: TCustomListView; Item: TListItem; SubItem: Integer;
State: TCustomDrawState; Stage: TCustomDrawStage;
var DefaultDraw: Boolean);
beginend;procedure TForm1.RzListView1CustomDraw(Sender: TCustomListView;
const ARect: TRect; var DefaultDraw: Boolean);
beginend;procedure TForm1.RzListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
beginend;procedure TForm1.RzListView1CustomDrawSubItem(Sender: TCustomListView;
Item: TListItem; SubItem: Integer; State: TCustomDrawState;
var DefaultDraw: Boolean);
beginend;
谁能解释一下,这几个函数在什么时候执行,有什么区别?
感激不尽.
2.ondrawitem,只影响列表视图的样式,有几项影响几项
3.oncustomdraw,针对整个背景,没有项的地方也受影响,可以设定ownerdraw值看一下效果
4.onCustomDrawItem 解决单个项的显示
5.oncustomXXX 和onAdvancedCustomXXX功能差不多,onAdvancedCustomXXX绘制前后触发多次,灵活性更强