Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-12533
Goida
2004-02-12 11:35
2004.03.05
Система принятия решений


1-12343
Sungod
2004-02-22 13:36
2004.03.05
ShellTreeView отбражение файлов определённого типа


3-12259
sohat
2004-02-09 10:44
2004.03.05
TClientDataSet. Как редактировать


14-12536
volkodav
2004-02-11 23:23
2004.03.05
1C


8-12453
alexay
2003-11-03 12:21
2004.03.05
Организация просмотра многостраничного файла TIFF GROUP 4





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский