自己遇到到个不知道是不是问题的问题,就是事件是什么时候响应,或者触发的,自定义事件或者系统事件:
例如:以下是截取D7里的一段代码TDrawTabEvent = procedure(Control: TCustomTabControl; TabIndex: Integer;
const Rect: TRect; Active: Boolean) of object;
TCustomTabControl = class(TWinControl)
private
FOnDrawTab: TDrawTabEvent;
protected
procedure DrawTab(TabIndex: Integer; const Rect: TRect; Active: Boolean); virtual;
property OnDrawTab: TDrawTabEvent read FOnDrawTab write FOnDrawTab;procedure TCustomTabControl.DrawTab(TabIndex: Integer; const Rect: TRect;
Active: Boolean);
begin
if Assigned(FOnDrawTab) then
FOnDrawTab(Self, TabIndex, Rect, Active)
else
FCanvas.FillRect(Rect);
end;
我想问的是:DrawTab事件什么时候执行,也就是在什么条件下执行,如果该条件为A,那么为什么要在A条件下执行,从哪里可以看出来是在A条件下执行的.是不是系统已经定义好了,那么如果我要定义自己定义一个事件,那如何写呢?
大部分看懂我要问的是什么吧,看懂了就请参与回贴,谢了!
例如:以下是截取D7里的一段代码TDrawTabEvent = procedure(Control: TCustomTabControl; TabIndex: Integer;
const Rect: TRect; Active: Boolean) of object;
TCustomTabControl = class(TWinControl)
private
FOnDrawTab: TDrawTabEvent;
protected
procedure DrawTab(TabIndex: Integer; const Rect: TRect; Active: Boolean); virtual;
property OnDrawTab: TDrawTabEvent read FOnDrawTab write FOnDrawTab;procedure TCustomTabControl.DrawTab(TabIndex: Integer; const Rect: TRect;
Active: Boolean);
begin
if Assigned(FOnDrawTab) then
FOnDrawTab(Self, TabIndex, Rect, Active)
else
FCanvas.FillRect(Rect);
end;
我想问的是:DrawTab事件什么时候执行,也就是在什么条件下执行,如果该条件为A,那么为什么要在A条件下执行,从哪里可以看出来是在A条件下执行的.是不是系统已经定义好了,那么如果我要定义自己定义一个事件,那如何写呢?
大部分看懂我要问的是什么吧,看懂了就请参与回贴,谢了!
解决方案 »
- delphi 数据库的问题
- 虛位以待~~
- 一个女孩等了我10年,我现在要疯了!
- 一个小问题
- 我有一软件项目,二层的数据库软件,急找人做,详情见贴子内容,谢谢
- 用Excel直接编写程序好,还是再用一种其它数据库代替Excel好?
- 各位高手帮忙翻译一个句子,thanks!
- 再问:有关 Delphi 6 的 TValueListEditor 组件问题。
- ==============关于query控件和sql 语句的问题===============
- 各位大虾,请问,如何动态调用资源文件,就是不写{$ resource.res},而用文件名参数,获取hInstance
- Availiable forms 與 Auto-create forms 的問題,高手請指點一下! 謝謝了!!!!!!!!
- 两个Adoquery...的问题
还有,你说的DRAWTAB事件,不太懂你的意思,ONDRAWTAB才是事件,DRAWTAB是个过程
procedure TCustomTabControl.CNDrawItem(var Message: TWMDrawItem);
var
SaveIndex: Integer;
begin
with Message.DrawItemStruct^ do
begin
SaveIndex := SaveDC(hDC);
FCanvas.Lock;
try
FCanvas.Handle := hDC;
FCanvas.Font := Font;
FCanvas.Brush := Brush;
DrawTab(itemID, rcItem, itemState and ODS_SELECTED <> 0);
finally
FCanvas.Handle := 0;
FCanvas.Unlock;
RestoreDC(hDC, SaveIndex);
end;
end;
Message.Result := 1;
end;