我想设计一个类,是一个带一个image 的tabsheet。 我不知道怎么写构造函数比较合适,另外,我要把image的双击事件封装在类里面,不知怎么写,最好能有个例子

解决方案 »

  1.   

    TYourClss=class(TTabSheet);
    private
      FOnImgDbClk: TNotifyEvent;
      Img: TImage;
      procedure ImgDbClick(Sender: TObject);
      //...
    public
      constructor Create(AOwner: TComponet); override;
    published
      property OnImgDbClick: TNotifyEvent read FOnImgDbClk write FOnImgDbClk;
    //.....................
    TYourClss.ImgDbClick(Sender: TObject);
    begin
      if Assigned(FOnImgDbClk) then
        FonImgDbClk(Self);
    end; 
    constructor ....
    begin
      Inherited;
      Img := TImage.Create(Self);
      Img.Parent := Self;
    end;
    destructor...
    begin
      Img.Free;
      inherited;
    end;
      

  2.   

    多谢赐教,还烦请解释一下为什么  “if Assigned(FOnImgDbClk) then FonImgDbClk(Self);”可以将FOnImgDbClk与ImgDbClick联系起来,怎么就能接受双击的消息了呢
      

  3.   


    “if Assigned(FOnImgDbClk) then FonImgDbClk(Self);”可以将FOnImgDbClk与ImgDbClick联系起来,
    这是 TNotifyEvent 的原理, Inside VCL.怎么就能接受双击的消息了呢界面上写代码,调用时的执行
      

  4.   

    我知道事件方法是个指针,但这段代码里FOnImgDbClk是我要设计的属性,ImgDbClick是我要设计的方法,我完全可以另外起个名字叫个FAAAAA什么的,我想问的是他们是怎么接受双击时间的?
      

  5.   

    FonImgDbClk(Self);
     鼠标双击,发送消息,响应事件
      

  6.   

    那我响应双击的事件写在if Assigned(FOnImgDbClk) then FonImgDbClk(Self);”下面?
      

  7.   

    构造函数中少东西了constructor ....
    begin
      Inherited;
      Img := TImage.Create(Self);
      Img.Parent := Self;
      Img.ONDbClick:=ImgDbClick;     //这样就联系起来了
    end;
      

  8.   

    以luyuhai(大海)的为基础 
    constructor ....
    begin
      Inherited;
      Img := TImage.Create(Self);
      Img.Parent := Self;
      Img.alient := alClient;
      Img.show();
      Img.ONDbClick:=ImgDbClick;     //这样就联系起来了
    end;
    Img.ondbclick := ImgDbClick的意思就是在控件内部用imgDblClick方法相应image的onclick事件,然后在imgDblClick方法中触发yourclass类的某个事件句柄。
    我前一阵子写了一个关于控件开发的教程,讲的比较清楚,希望对你有帮助,可以去我的blog上看看,地址:http://www.blogjava.net/huanzhugege/