Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
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
|
|
![]() |
|
|
8:04:2008, 14:18
|
|
============== ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 1 877 Регистрация: 11:01:2007 Пользователь №: 8 750 Специализация: specialist Репутация: 28
|
Если только динамически создавать, по другому - а почему именно "без его регистрации" ... ?
|
|
Сообщение
#2
|
|
|
|
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
|
|
|
|
8:04:2008, 18:36
|
|
============== ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 1 877 Регистрация: 11:01:2007 Пользователь №: 8 750 Специализация: specialist Репутация: 28
|
Вспомнив о том, что ТCheckBox - окно, а TColor тоже целочисленный тип, то можно и SetProp/GetProp заюзать.
|
|
Сообщение
#4
|
|
|
|
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
|
|
![]() |
|
Текстовая версия | Сейчас: 5:07:2008 - 04:35 |