Форум: "Основная";
Текущий архив: 2004.03.05;
Скачать: [xml.tar.bz2];
ВнизСоздание своих компонентов Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c