关于控件制作(100分)

  • 主题发起人 主题发起人 KN
  • 开始时间 开始时间
K

KN

Unregistered / Unconfirmed
GUEST, unregistred user!
我是这样写的
TMyComponent=class(Tcomponent)
private
FimgList :TImageList;
...
published
property ImageList :TImageList read FImgList write FImgList;
...
end;
不知道为什么在设计期间删除ImageList会出错,运行时候删除就不会出错。请高手指导啊

 
不知道和你问的问题有没有关系,按习惯,属性为TComponent及其继承类时这样写:

property ImageList :TCustomImageList read FImgList write SetImgList;

procedure TMyComponent.SetImgList(const Value: TCustomImageList);
begin
if FImageList <> Value then begin
FImageList := Value;
if FImageList <> nil then
FImageList.FreeNotification(Self);
end;
end;

[blue]然后[/blue]override掉Notification

procedure TMyComponent.Notification(AComponent: TComponent;
Operation: TOperation);
begin
if (Operation = opRemove) and (AComponent = FImageList) then
FImageList := nil;
end;

[green]最后[/green],组件中所有用到ImageList地方,在前面加上if Assigned(FImageList)的判断,也许能解决你的问题。
 
太感谢了,接受答案
 
后退
顶部