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

Refresh собственного компонента при изменении свойства   Найти похожие ветки 

← →
Jimmy   (2007-09-09 12:35) [0]

Добрый день! Делаю свой компонент - цветную кнопку. Что нужно сделать, чтобы при изменении какого-нибудь свойства (например, округлость углов) кнопка автоматически перерисовывалась бы? Чтобы каждый раз потом не писать:
ColorButton1.RoundCorner:=True;
ColorButton1.Refresh;{!!!}
Заранее спасибо.


← →
engine ©   (2007-09-09 12:38) [1]

Рэй Конопка "Создание оригинальных компонент в среде DELPHI"


← →
Jimmy   (2007-09-09 12:44) [2]

А поконкретней нельзя?


← →
engine ©   (2007-09-09 12:49) [3]

Так, а в чем собственно проблема-то?
Реализуй это в методах доступа к свойствам класса.


← →
{RASkov} ©   (2007-09-09 12:52) [4]

> [0] Jimmy   (09.09.07 12:35)
> Чтобы каждый раз потом не писать:
> ColorButton1.RoundCorner:=True;
> ColorButton1.Refresh;{!!!}

А ты как хотел?
При изменении какого либо свойства, которое влияет на визуальную часть компонента, необходимо сообщить что бы его перерисовали.
Только не Refresh, а Invalidate.

> [2] Jimmy   (09.09.07 12:44)
> А поконкретней нельзя?

Вот там [1] все и поконкретнее :)


← →
Jimmy   (2007-09-09 12:52) [5]

Как?


← →
Jimmy   (2007-09-09 12:57) [6]

То есть как реализовать это в методах доступа к свойствам класса?


← →
{RASkov} ©   (2007-09-09 12:59) [7]

> [5] Jimmy   (09.09.07 12:52)

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

procedure TMyComponent.SetRoundCorner(Value: Boolean);
begin
 if FRoundCorner=Value then Exit;
 FRoundCorner:=Value;
 Invalidate;
end;

FRoundCorner - поле в твоем компоненте - FRoundCorner: Boolean;
и должно быть свойство:
property RoundCorner: Boolean; read FRoundCorner write SetRoundCorner;


← →
engine ©   (2007-09-09 13:02) [8]

TMyClass = class
private
 FColor : TColor;
protected
 function  GetColor : TColor;
 procedure SetColor ( Value : TColor);
public
 property Color : TColor read GetColor write SetColor;
end;

function TMyClass.GetColor : TColor;
begin
 Result := FColor;
end;

procedure TMyClass.SetColor ( value : TColor );
begin
 if value <> FColor then
 FColor := value;

 ... // Тут можешь добавить функциональность к методу
end;


← →
Jimmy   (2007-09-09 13:22) [9]

Все сделал. Но при изменении свойства
RoundCorner:=True;
перерисовки все равно не происходит.


← →
engine ©   (2007-09-09 13:23) [10]

> [9] Jimmy   (09.09.07 13:22)

Ошибка в 17-й строке.


← →
Jimmy   (2007-09-09 13:23) [11]

А кто будет вызывать процедуру SetRoundCorner?


← →
{RASkov} ©   (2007-09-09 18:50) [12]

> [11] Jimmy   (09.09.07 13:23)

Пушкин?


← →
{RASkov} ©   (2007-09-09 18:51) [13]

Покажи как сделал...



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

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



Память: 0.48 MB
Время: 0.016 c
1-1185448950
AndreyRU
2007-07-26 15:22
2007.10.07
Блокировка мышиных сообщений! TPopupMenu..


15-1189531493
vasIZmax
2007-09-11 21:24
2007.10.07
"Тарифный" ход


15-1189390927
Slider007
2007-09-10 06:22
2007.10.07
С днем рождения ! 10 сентября 2007 понедельник


15-1189189560
Nous Mellon_
2007-09-07 22:26
2007.10.07
Простой вопрос по регуляркам + пхп


1-1185183848
Tack
2007-07-23 13:44
2007.10.07
Проверить файл при открытии контекстного меню проводника




   Наверх