一個簡單問題﹗(49分)

  • 主题发起人 主题发起人 fancy105
  • 开始时间 开始时间
F

fancy105

Unregistered / Unconfirmed
GUEST, unregistred user!
在編寫組件時﹐自定義了一個OnChange事件.
在這個組件的一個Timer的OnTimer事件中調用。
但在使用該組件時(動態建立)﹐如果OnChange
事件不賦值則出錯﹐怎么避免這外錯誤﹖
試過這樣的寫法﹕
if Assign(FOnChange) then
FOnChang(Sender); //調用
卻是錯誤的。
 
详细点,给点源码怎么样?!
 
type
TMy=class(TObject)
private
FTimer:TTimer;
procedure MyLoop(Sender:TObject);
public
property onchange:TNotifyEvent read FOnchange write SetOnChange;
constructor Create;
....
end;

implicatation
constructor create;
begin
FTimer:=TTimer.create(nil);
FTimer.OnTimer:=MyLoop;
end;

procedure TMy.MyLoop(Sender:TObject);
begin
if Assign(FOnChange) then //這句語法錯﹐不知如果調用Assign
FOnChange﹔ //直接寫這句﹐則在使用該組件時﹐
end; //必須賦值Onchange事件,否則就引發內存地址錯誤
 
是Assigned
 
if Assigned(FOnChange) then
 
procedure TMy.MyLoop(Sender:TObject);
begin
if Assigned(FOnChange) then //改为Assigned
FOnChange﹔ 時﹐
end;
 
OK,太菜了﹗﹗﹗
 
多人接受答案了。
 
无所谓了,多学、多问、多想就会好的。
 
后退
顶部