Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )




> Как добавить свойства к компоненту без его регистрации?
bvn123
Вставить ник
сообщение 8:04:2008, 13:34
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 2
Регистрация: 8:04:2008
Пользователь №: 16 460
Специализация: Разработка электроники, ПО



Репутация: - 0 +


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

хочу к компоненту 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.


Спасибо
Подняться вверх 
 
Сообщение #1
 
Новая тема 
Ответов (1 - 4)
sax_ol
Вставить ник
сообщение 8:04:2008, 14:18
Цитата Ответить 


==============
*****

Группа: Модеры
Сообщений: 1 877
Регистрация: 11:01:2007
Пользователь №: 8 750
Специализация: specialist



Репутация: - 28 +


Если только динамически создавать, по другому - а почему именно "без его регистрации" ... ?
Подняться вверх 
 
Сообщение #2
zubr
Вставить ник
сообщение 8:04:2008, 17:45
Цитата Ответить 


Божественный
*****

Группа: Модеры
Сообщений: 904
Регистрация: 19:11:2003
Пользователь №: 133



Репутация: - 11 +


Можно, но с извратами:
Код
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
sax_ol
Вставить ник
сообщение 8:04:2008, 18:36
Цитата Ответить 


==============
*****

Группа: Модеры
Сообщений: 1 877
Регистрация: 11:01:2007
Пользователь №: 8 750
Специализация: specialist



Репутация: - 28 +


Вспомнив о том, что ТCheckBox - окно, а TColor тоже целочисленный тип, то можно и SetProp/GetProp заюзать.
Подняться вверх 
 
Сообщение #4
bvn123
Вставить ник
сообщение 9:04:2008, 08:57
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 2
Регистрация: 8:04:2008
Пользователь №: 16 460
Специализация: Разработка электроники, ПО



Репутация: - 0 +


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

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

Получил устраивающий меня ответ на 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;
Подняться вверх 
 
Сообщение #5


Быстрый ответ  Ответить  Новая тема 

> Быстрый ответ
Полужирный
Курсив
Подчеркнутый
Вставить изображение
Смайлики
Цитата
Код
 
 Отправлять уведомления об ответах на e-mail |  Включить смайлики |  Добавить подпись
   

 

RSS Текстовая версия Сейчас: 5:07:2008 - 04:35
с нами можно связаться по:
телефону: +375-(29)-632-60-67
e-mail:info@codeby.net