Форум: "Основная";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
ВнизУправление свойством компонента Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.04 c