Как добавить свойства к компоненту без его регистрации?

Тема в разделе "Delphi - Компоненты", создана пользователем bvn123, 8 апр 2008.

  1. bvn123

    bvn123 Гость

    Здравствуйте,

    хочу к компоненту TCheckBox добавить по несколько свойств типов Integer и TColor во время написания программы (компонент TCheckBox уже размещен на форме, писать можно непосредственно в программе)

    Я знаю, как создать компонент-наследник TCheckBox с доп.свойствами и разместить его на палитре компонентов - этот вариант не подходит.
    Другие возможности также не интересуют (например, создать структуру, в которой будут элементами ссылка на TCheckBox и доп.свойства)

    можно ли это сделать и что надо добавить в такую программу:


    Код (Text):
    unit Unit1;
    interface
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs;
    type
    TForm1 = class(TForm)
    CheckBox1: TCheckBox;
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}

    end.
    Спасибо
     
  2. zubr

    zubr Гость

    Можно, но с извратами:
    Код (Text):
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls;

    type
    TForm1 = class(TForm)
    CheckBox1: TCheckBox;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    private
    { Private declarations }
    OldCheckBox:TCheckBox;
    public
    { Public declarations }
    end;

    TMyCheckBox = class(TCustomCheckBox)
    private
    function GetMyColor:TColor;
    procedure SetMyColor(value:TColor);
    public
    procedure MyMetod;
    property MyColor:TColor read GetMyColor write SetMyColor;
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}

    var
    FColor:TColor;
    MyCheckBox:TMyCheckBox;

    function TMyCheckBox.GetMyColor:TColor;
    begin
    Result:=FColor;
    end;

    procedure TMyCheckBox.SetMyColor(value:TColor);
    begin
    FColor:=value;
    end;

    procedure TMyCheckBox.MyMetod;
    begin
    MessageBox(0, 'Ok', '', MB_OK);
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    MyCheckBox.MyMetod;
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    begin
    MyCheckBox.Checked:=True;
    MyCheckBox.MyColor:=clYellow;
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    MyCheckBox:=TMyCheckBox(CheckBox1);
    end;

    procedure TForm1.Button3Click(Sender: TObject);
    begin
    Color:=MyCheckBox.MyColor;
    end;

    end.
     
  3. bvn123

    bvn123 Гость

    Спасибо всем,

    без регистрации компонента - потому что задача сиюминутная, дополнительный компонент, слегка отличающийся от оригинала, будет засорять палитру, к тому же компилировать прог. приходится на разных РС, всюду ставить компонент хлопотно.

    Получил устраивающий меня ответ на delphikingdom,
    теперь фрагмент моего кода выглядит так (работает):


    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls, ExtCtrls;

    type
    TCheckBox = class(StdCtrls.TCheckBox)
    private
    fChartColor : TColor;
    fRowNum:integer;
    public
    property ChartColor : TColor read fChartColor write fChartColor;
    property RowNum : integer read fRowNum write fRowNum;
    end;

    TForm1 = class(TForm)
    cb: TCheckBox;

    private
    { Private declarations }
    public
    { Public declarations }
    end;
     
Загрузка...

Поделиться этой страницей