我想开发一个组件,他有一个TPicture属性,请问怎样才能在该组件的属性浏览器中设定他,就像TImage控件的Picture属性一样。请各位高手相助。

解决方案 »

  1.   

    好像要用到对象持久化技术,也就是必需是TPersistent的子类。
    属性编辑器,要是TPropertyEditor的子类.
      

  2.   

    好像TPicture有默认属性编辑器啊
      

  3.   

    直接写就行,主要是写一个TPicture的OnChange事件
    然后在Paint画一画就行,然后TPicture有它默认的属性编辑器unit ImageControl;interfaceuses
      Windows, Messages, SysUtils, Classes, Controls, Graphics, ExtCtrls;type
      TImageControl = class(TCustomControl)
      private
        { Private declarations }
        FPicture: TPicture;
        FAutoSize: Boolean;
        FStretched: Boolean;    procedure PictureChanged(Sender: TObject);
        procedure SetPicture(Value: TPicture);
      protected
        { Protected declarations }
        procedure Paint; override;
      public
        { Public declarations }
        constructor Create(AOwner: TComponent); override;
        destructor  Destroy; override;
      published
        { Published declarations }
        property Picture: TPicture read FPicture write SetPicture;
      end;procedure Register;implementationprocedure Register;
    begin
      RegisterComponents('GybCtrl', [TImageControl]);
    end;{ TImageControl }constructor TImageControl.Create(AOwner: TComponent);
    begin
      inherited;
      FPicture := TPicture.Create;
    end;destructor TImageControl.Destroy;
    begin
      FPicture.Free;
      inherited;
    end;procedure TImageControl.Paint;
    begin
      inherited;
      Canvas.Draw(0, 0, FPicture.Graphic);
    end;procedure TImageControl.PictureChanged(Sender: TObject);
    begin
      FPicture.Assign(FPicture.Graphic);
    end;procedure TImageControl.SetPicture(Value: TPicture);
    begin
      FPicture.Assign(Value);
    end;end.
      

  4.   

    不好意思我上面那个,有错误,没有写过控件
    constructor TImageControl.Create(AOwner: TComponent);
    begin
      inherited;
      FPicture := TPicture.Create;
      FPicture.OnChange := PictureChanged;
    end;procedure TImageControl.PictureChanged(Sender: TObject);
    begin
      Repaint;
    end;TPicture有默认的属性编辑器,当装上控件后就会向TImage那样出现Picture属性编缉器了