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

Вниз

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

 
R   (2003-06-20 06:42) [0]

Мастера подскажите я не силен в написании компанентов в той части- структура да и вообще подход к этому делу. Вопрос такой:
Является ли нормальным задание свойства компаненту по такой схеме

private
FS:String;//переменная используемая в компаненте для
смены определенного свойства

public
property TextLabel:String read FS write FS;
//интересует вот эта часть правильный ли это подход или нет?


 
MBo ©   (2003-06-20 07:02) [1]

правильность подхода зависит от тонкостей использования свойства.
Если, к примеру, при изменении свойства извне компонента должны производиться какие-то действия (обновление связанных полей), то write нужно не поле FS непосредственно, а сделать процедуру SetFS (как и делается в среде по умолчанию, если написать просто
property TextLabel:String; и Ctrl-Shift-C нажать)


 
R   (2003-06-20 07:57) [2]

т.е. если я правильно понял SetFS проверяет изменилось ли свойство если да то меняет и переменную
.......write SetFS(Val:String);
procedure SetFS(Val:String);
begin
If Val<>FS Then FS:=Val;
end;
Для этого нужна процедура смены?


 
Forester ©   (2003-06-20 08:14) [3]

Методы доступа к свойствам предназначены для выполнения набора операций которые необходимо произвести при изменении свойства (проверка на допустимость присваимого значения, вызов процедуры отображения, изменение значений других свойств и т. д.).


 
Юрий Зотов ©   (2003-06-20 08:21) [4]

> R (20.06.03 07:57)
> Для этого нужна процедура смены?

Нет, не для этого. В таком виде метод SetFS никому не нужен и можно оставить прямой доступ к полю, как было у Вас первоначально: ... write FS.

Но представьте, что при изменении значения свойства требуется выполнить какие-то дополнительные действия. Ну, например, надо перерисовать компонент. Вот тогда уже нужен метод установки свойства, а в нем мы напишем:

procedure SetFS(const Value: string);
begin
if Value <> FS then // Чтобы не делать лишнюю работу
begin
FS := Value; // Меняем поле
Invalidate // Перерисовываем
end
end;

Откройте исходники VCL, посмотрите - там же целая куча примеров.


 
R   (2003-06-20 09:14) [5]

Всем спасибо.



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

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

Наверх




Память: 0.47 MB
Время: 0.012 c
11-97571
Святослав
2002-10-24 12:44
2003.06.30
Подключение OLE-сервера к программе на KOL


1-97687
Blacki
2003-06-17 11:26
2003.06.30
HWND Скролбара компонента TMemo


3-97496
MadProfessor
2003-06-02 12:19
2003.06.30
Ребята выручайте ... MSAccess, Server-Client, как организовать ..


3-97506
Igor Mish
2003-06-05 10:54
2003.06.30
Можно еще про Rave :-)


9-97469
Michael Makushev
2003-01-08 13:45
2003.06.30
DelphiX - развивается?