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

Вниз

Управление свойством компонента   Найти похожие ветки 

 
dreamse   (2006-09-25 06:30) [0]

Пишу компонент.
Создал свойстно новое у компонента для управления видимостью одного элемента :


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 то он не обрабатываеться так как код выполняеться на этапе кидания компонента на форму :(

Какую процедуру в компоненты нужно создать чтобы она отлавливала момент изменения функции в инспекторе объектов ?


 
Ketmar ©   (2006-09-25 06:35) [1]

заменить во write ссылку на поле процедурой.


 
dreamse   (2006-09-25 06:49) [2]

Сделал так :



 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

Что это значит ?


 
dreamse   (2006-09-25 06:58) [3]

Всё разобрался !


 
dreamse   (2006-09-25 07:09) [4]

Блин теперь в 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;


В общем в данном варианте компилиться но не меняет в дизайнере объектов свойство.

Что делать ?


 
Ketmar ©   (2006-09-25 07:12) [5]

>[4] dreamse 25-Sep-2006, 07:09
>Что делать ?
за метлой, за метлой. потому как нельзя писать компоненты, не зная даже базы -- собственно языка. а я тут наблюдаю полное непонимание того, что есть свойства и как их правильно готовить.


 
dreamse   (2006-09-25 07:57) [6]

уже разобрался :) спасибо за советы

(Sender: TMuteVisible);  на MuteVisible: TMuteVisible


 
Ketmar ©   (2006-09-25 08:31) [7]

о ужас... это называется не "разобрался", а "украл костыль и бегу на марафон; непонятно только, почему на меня смотрят как на психа"...


 
Юрий Зотов ©   (2006-09-26 07:08) [8]

> но не меняет в дизайнере объектов свойство

Оно не в дизайнере, оно вообще не меняется. Вы же его нигде не меняете, так с чего ему меняться-то?


 
dreamse   (2006-09-26 07:28) [9]

> Юрий Зотов ©   (26.09.06 07:08) [8]

Угу.

Уже разобрался, меняю его в процедуре на которую указывает Write
Спасибо за советы



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

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

Наверх




Память: 0.49 MB
Время: 0.05 c
15-1161255761
zdm
2006-10-19 15:02
2006.11.05
ToolBar


15-1161198097
Михель
2006-10-18 23:01
2006.11.05
Помогите найти песню! Может, у кого есть?


15-1161192320
ArtemESC
2006-10-18 21:25
2006.11.05
Запутался с Реестром Far a...


15-1160558067
Gero
2006-10-11 13:14
2006.11.05
Ну вот, я старался, рисовал сердце, а тему удалили


2-1161513280
-=Germe$=-
2006-10-22 14:34
2006.11.05
Подскажите плиз