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

  • Автор темы Автор темы bvn123
  • Дата начала Дата начала
B

bvn123

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

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

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

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


Код:
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.

Спасибо
 
Можно, но с извратами:
Код:
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.
 
Спасибо всем,

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

Получил устраивающий меня ответ на 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;
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!