Вниз
Скачать: CL | DM;

Как сообщить компоненту из свойства-объекта - надо перерисов   Найти похожие ветки 

← →
Poirot ©   (2002-08-03 06:50) [0]

ПРоблема в следующем...
Я создаю класс с в котором есть свойства описывающие какойто-обект... И этот класс служит свойством другого класса...

TMyPropClass = class (TPersistent)
////
published
property MyColor:TColor///и и.д
end;

TMyClass = class(TCustomObject)
published
property Prop:TMyPropClass read FProp write SetProp;
end;

Так вот проблема.... Я в изменяю свойство MyColor и соответственно ему надо перерисовать Канву...

Была иделя посылать WM_PAINT, но почему-то размеры компонента меняются на (0,0);
Буду благодарен любой помощи...


← →
Poirot ©   (2002-08-03 06:54) [1]

TCustomObject - вмысле TCustom Object где Object - Label, ComboBox, Edit и т.п.


← →
Старый паскалист   (2002-08-03 15:05) [2]

Обычно это делается введением св-ва OnChange в объект-свойство.
Примерно так:

TMyPropClass = class (TPersistent)
private
FOnChange: TNtifyEvent;
procedure Changed;
published
property OnChange: TNotifyEvent read FOnChange write FOnChange;
property MyColor:TColor read ... write SetMyColor;
end;

procedure TMyPropClass.Changed;
begin
if Assigned(FOnChange) then FOnChange(Self);
end;

procedure TMyPropClass.SetMyColor(Value: TColor);
begin
if FMyColor <> Value then
begin
FMyColor := Value;
Changed; // При изменении св-в будет обновлён объект-хозяин.
end;
end;

constructor TMyPropClass.Create;
begin
FOnChange := Owner.ChangeStyle; // Метод обновления объекта-хозяина
end;

(Посмотри в исходниках VCL, как это сделано для TFont и т.д.)


← →
Poirot ©   (2002-08-04 01:15) [3]


> Старый паскалист

Огромное спасибо
> constructor TMyPropClass.Create;
> begin
> FOnChange := Owner.ChangeStyle; // Метод обновления объекта-хозяина
> end;

Тока так не работает, а работает... если в предке сделать метод и событию дитя его присвоить... т.к. Owner не обладает такими и докучи неуниверсально... надо все классы ск оторыми работаемс...

А Вообщем огромное спасибо... работает как часы...



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.011 c
1-48149
MikeFW
2002-08-01 15:54
2002.08.15
Как сделать выполнение функции по нажатию кнопки Enter?


14-48290
AL2002
2002-07-18 22:14
2002.08.15
А есть ли возможность качнуть более ранние архивы форумов?


1-48197
Alex_31072002
2002-07-31 22:06
2002.08.15
Ресурсы и Runtime packages


14-48318
Igor_thief
2002-07-19 13:19
2002.08.15
Народ, как изменить вид hint a?


3-47983
Glonia Zbanov
2002-07-26 15:24
2002.08.15
Передача данных




   Наверх