Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Управление свойством компонента [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 ссылку на поле процедурой.


Наверх

Титульная страница Поиск, карта сайта Написать письмо