自写了一个控件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这种都不会触发。不触发我无法在属性被改变时进行一些操作。
这种情况如何解决呢?

解决方案 »

  1.   

    Myimage1.Picture.assgin(xxx);//此时不会弹出“SetPicture被激活”
    Myimage1.Picture.LoadFromFile(xxx);//此时不会弹出“SetPicture被激活”
    没看源代码,不知道这个能不能用OverRide重写。
      

  2.   

    你哪两种方法都是Picture内部的实现,不是对picture这个属性的操作
      

  3.   

    既然用":="这样赋值时才会触发,你就那样赋值不就OK了,比如:
    Pt:= Tpicture.create(nil);
    pt.LoadFromFile(xxx);//
    Myimage1.Picture := pt;
      

  4.   


    关键是问题如何解决呢
    我要这个属性被":="这样赋值时及assgin和loadfrom这种都进行一些操作。比如改变自写控件的图片
      

  5.   


    这样是可以,但是不是问题的解决办法啊。我要这个属性被":="这样赋值时及assgin和loadfrom这种都进行一些操作。比如改变自写控件的图片
      

  6.   

    在TPicture 中OnChange处理不行吗?
    LoadFromFile 是TPicture内部函数 与自定义SetPicture无关
    要处理LoadFromFile发生的事件 只能求助于TPicture内部事件