Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.05;
Скачать: CL | DM;

Вниз

Создание своих компонентов   Найти похожие ветки 

 
Nimble ©   (2004-02-25 17:20) [0]

Как при написании своего компонента сделать некоторые свойства свёрнутыми. Так как Font, Constraints.
В моём случае нужно "свернуть" несколько свойств типа TColor.
Буду очень признательным за ответ с примером.


 
Skier ©   (2004-02-25 17:22) [1]

TColor это не класс.
Его, дружище, не "свернешь"


 
Nimble ©   (2004-02-25 17:29) [2]

Не, я создаю класс TFieldColors в котором около 5-ти переменных типа TColor. но когда я добавляю этот класс в компонент. появляется ошибка доступа по такомута адресу.


 
Skier ©   (2004-02-25 17:30) [3]

1) TFieldColors = class(TPersistent)
2)
> но когда я добавляю этот класс в компонент. появляется ошибка
> доступа по такомута адресу.

Код !


 
MBo ©   (2004-02-25 17:32) [4]

>ошибка доступа по такомута адресу
Наверно, ты не создаешь экземпляр TFieldColors


 
Nimble ©   (2004-02-25 17:35) [5]

это в компоненте:
...
published
property FieldColors:TFieldColors read FFieldColors write FFieldColors;
...
это класс пока только 4 цвета:
...
type
TFieldColors= class(TPersistent)
private
FFieldCurrent:TColor;
FFieldHead:TColor;
FFieldSelected:TColor;
FFieldSimple:TColor;
function GetFieldColor(Index:Integer):TColor;
procedure SetFieldColor(Index:Integer;Value:TColor);
public
constructor Create;
published
property FieldCurrent:TColor index 0 read GetFieldColor write SetFieldColor default cl3dLight;
property FieldHead:TColor index 1 read GetFieldColor write SetFieldColor default clBtnFace;
property FieldSelected:TColor index 2 read GetFieldColor write SetFieldColor default clBlue;
property FieldSimple:TColor index 3 read GetFieldColor write SetFieldColor default clWhite;
end;

implementation

function TFieldColors.GetFieldColor(Index:Integer):TColor;
begin
case Index of
0:result:=FFieldCurrent;
1:result:=FFieldHead;
2:result:=FFieldSelected;
3:result:=FFieldSimple;
end;
end;

procedure TFieldColors.SetFieldColor(Index:Integer;Value:TColor);
begin
case Index of
0:FFieldCurrent:=Value;
1:FFieldHead:=Value;
2:FFieldSelected:=Value;
3:FFieldSimple:=Value;
end;
end;

constructor TFieldColors.Create;
begin
inherited Create;
FFieldCurrent:=cl3DLight;
FFieldHead:=clBtnFace;
FFieldSelected:=clBlue;
FFieldSimple:=clWhite;
end;
...


 
Nimble ©   (2004-02-25 17:39) [6]

В методе Create компонента:
...
FFieldColors.Create;
...


 
MBo ©   (2004-02-25 17:41) [7]

так в конструкторе компонента есть вызов
FFieldColors:=TFieldColors.Create ?


 
MBo ©   (2004-02-25 17:41) [8]

>FFieldColors.Create;
ай-яй-яй ;)


 
Skier ©   (2004-02-25 17:45) [9]

FFieldColors := TFieldColors.Create;


 
Skier ©   (2004-02-25 17:46) [10]

И освободить не забудь !


 
Nimble ©   (2004-02-25 17:47) [11]

поменял на
...
FFieldColors:=TFieldColors.Create;
...
теперь всё класс.
Большое спасибо!!!


 
Nimble ©   (2004-02-25 17:48) [12]

А как освободить?
Что бы уже не рыскал :-)


 
Skier ©   (2004-02-25 17:51) [13]

В перекрытом методе Destroy компонента напиши FFieldColors.Free;


 
Nimble ©   (2004-02-25 17:52) [14]

Понял, еще раз спасибо


 
Anatoly Podgoretsky ©   (2004-02-25 17:54) [15]

А освобождаются объекты через Free причем все.


 
Nimble ©   (2004-02-25 18:08) [16]

Ну и на последок, если не трудно.
Как из TFieldColors вызвать метод Paint компонента


 
Skier ©   (2004-02-25 18:11) [17]

>Nimble © (25.02.04 18:08) [16]

> Как из TFieldColors вызвать метод Paint компонента

Нужно сохранить ссылку на этот компонент в поле экз. класса TFieldColors


 
Nimble ©   (2004-02-25 18:22) [18]

Поле экз. класса TFieldColors должно быть TComponent?


 
Skier ©   (2004-02-25 18:24) [19]

>Nimble © (25.02.04 18:22) [18]

> Поле экз. класса TFieldColors должно быть TComponent?

да хоть Pointer :)
но красивее всего сделать это поле такого же типа как и
твой компонент, т.е.
FMainComponent : TYourComponentClass;



Страницы: 1 вся ветка

Текущий архив: 2004.03.05;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.022 c
14-12493
тихий вовочка
2004-02-14 10:57
2004.03.05
QNX


7-12551
man
2003-12-17 10:42
2004.03.05
как остановить сервис из самого сервиса


1-12434
Артём
2004-02-23 14:02
2004.03.05
Вопрос по dll


14-12484
vidiv
2004-02-12 09:03
2004.03.05
может ли PHP с OLE объектами работать?


1-12371
Ivolg
2004-02-25 11:42
2004.03.05
Компоненты