自写了一个控件TMyimage,有一个属性Picture:TPicture read FPicture Write SetPicture;procedure SetPicture;
begin
showmessage('SetPicture被激活');
end;
安装后,拖出来,写代码如下Myimage1.Picture:=xxx;//此时会弹出“SetPicture被激活”写代码如下Myimage1.Picture.assgin(xxx);//此时不会弹出“SetPicture被激活”
Myimage1.Picture.LoadFromFile(xxx);//此时不会弹出“SetPicture被激活”也就是说Write后的函数只能在属性被":="这样赋值时才会触发。assgin和loadfrom这种都不会触发。不触发我无法在属性被改变时进行一些操作。
这种情况如何解决呢?
begin
showmessage('SetPicture被激活');
end;
安装后,拖出来,写代码如下Myimage1.Picture:=xxx;//此时会弹出“SetPicture被激活”写代码如下Myimage1.Picture.assgin(xxx);//此时不会弹出“SetPicture被激活”
Myimage1.Picture.LoadFromFile(xxx);//此时不会弹出“SetPicture被激活”也就是说Write后的函数只能在属性被":="这样赋值时才会触发。assgin和loadfrom这种都不会触发。不触发我无法在属性被改变时进行一些操作。
这种情况如何解决呢?
Myimage1.Picture.LoadFromFile(xxx);//此时不会弹出“SetPicture被激活”
没看源代码,不知道这个能不能用OverRide重写。
Pt:= Tpicture.create(nil);
pt.LoadFromFile(xxx);//
Myimage1.Picture := pt;
关键是问题如何解决呢
我要这个属性被":="这样赋值时及assgin和loadfrom这种都进行一些操作。比如改变自写控件的图片
这样是可以,但是不是问题的解决办法啊。我要这个属性被":="这样赋值时及assgin和loadfrom这种都进行一些操作。比如改变自写控件的图片
LoadFromFile 是TPicture内部函数 与自定义SetPicture无关
要处理LoadFromFile发生的事件 只能求助于TPicture内部事件