![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Управление свойством компонента [D7, WinXP]
dreamse © (2006-09-25 06:30:00)Пишу компонент.
Создал свойстно новое у компонента для управления видимостью одного элемента :
type
TMuteVisible = (mNormal, mHide);
TShellVolumePanel = class(TRzPanel)
private
{ Private declarations }
// EMuteVisible:TMuteVisible;
FMuteVisible: TMuteVisible;
...
published
{ Published declarations }
property MuteVisible: TMuteVisible read FMuteVisible write FMuteVisible;
Он отлично показываеться в IDE инспекторе объектов и изменяеться.
В самом компоненте стоит обработчик :
if MuteVisible = mNormal then
TssChk.Visible := true;
if MuteVisible = mHide then
TssChk.Visible := false;
Теперь вопрос : Куда этот обработчик вставтить чтобы он моментально фиксировал изменения свойства в инспекторе объектов ?
Если вставтить в секцию Create то он не обрабатываеться так как код выполняеться на этапе кидания компонента на форму :(
Какую процедуру в компоненты нужно создать чтобы она отлавливала момент изменения функции в инспекторе объектов ?
dreamse (2006-09-26 07:28:00) [1]> Юрий Зотов © (26.09.06 07:08) [8]
Угу.
Уже разобрался, меняю его в процедуре на которую указывает Write
Спасибо за советы
Юрий Зотов (2006-09-26 07:08:00) [2]> но не меняет в дизайнере объектов свойство
Оно не в дизайнере, оно вообще не меняется. Вы же его нигде не меняете, так с чего ему меняться-то?
Ketmar (2006-09-25 08:31:00) [3]о ужас... это называется не "разобрался", а "украл костыль и бегу на марафон; непонятно только, почему на меня смотрят как на психа"...
dreamse (2006-09-25 07:57:00) [4]уже разобрался :) спасибо за советы
(Sender: TMuteVisible); на MuteVisible: TMuteVisible
Ketmar (2006-09-25 07:12:00) [5]>[4] dreamse 25-Sep-2006, 07:09
>Что делать ?
за метлой, за метлой. потому как нельзяписать компоненты, не зная даже базы -- собственно языка. а я тут наблюдаю полное непонимание того, что есть свойства и как их правильно готовить.
dreamse (2006-09-25 07:09:00) [6]Блин теперь в IDE значение вообще не меняеться :(
чтобы заработало в прошло м примере поменял :
procedure setMuteVolume(Sender: TMuteVisible);
Весь код :
type
TMuteVisible = (mNormal, mHide);
TShellVolumePanel = class(TRzPanel)
private
{ Private declarations }
FMuteVisible: TMuteVisible;
procedure setMuteVolume(Sender: TMuteVisible);
protected
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
property MuteVisible: TMuteVisible read FMuteVisible write setMuteVolume;
end;
procedure Register;
implementation
procedure TShellVolumePanel.setMuteVolume;
begin
if MuteVisible = mHide then
TssChk.Visible := false
else
if MuteVisible = mNormal then
TssChk.Visible := true;
end;
В общем в данном варианте компилиться но не меняет в дизайнере объектов свойство.
Что делать ?
dreamse (2006-09-25 06:58:00) [7]Всё разобрался !
dreamse (2006-09-25 06:49:00) [8]Сделал так :
protected
{ Protected declarations }
procedure setMuteWolume;
published
property MuteVisible: TMuteVisible read FMuteVisible write setMuteWolume;
...
procedure TShellVolumePanel.setMuteWolume;
begin
if MuteVisible = mNormal then
TssChk.Visible := true;
if MuteVisible = mHide then
TssChk.Visible := false;
end;
ругаеться на строку : property MuteVisible: TMuteVisible read FMuteVisible write setMuteWolume;
говорит Incompatible types
Что это значит ?
Ketmar (2006-09-25 06:35:00) [9]заменить во write ссылку на поле процедурой.