![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Refresh собственного компонента при изменении свойства [D6, XP]
Jimmy © (2007-09-09 12:35:00)Добрый день! Делаю свой компонент - цветную кнопку. Что нужно сделать, чтобы при изменении какого-нибудь свойства (например, округлость углов) кнопка автоматически перерисовывалась бы? Чтобы каждый раз потом не писать:
ColorButton1.RoundCorner:=True;
ColorButton1.Refresh;{!!!}
Заранее спасибо.
{RASkov} (2007-09-09 18:51:00) [1]Покажи как сделал...
{RASkov} (2007-09-09 18:50:00) [2]> [11] Jimmy (09.09.07 13:23)
Пушкин?
engine (2007-09-09 13:23:00) [3]> [9] Jimmy (09.09.07 13:22)
Ошибка в 17-й строке.
Jimmy (2007-09-09 13:23:00) [4]А кто будет вызывать процедуру SetRoundCorner?
Jimmy (2007-09-09 13:22:00) [5]Все сделал. Но при изменении свойства
RoundCorner:=True;
перерисовки все равно не происходит.
engine (2007-09-09 13:02:00) [6]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;
{RASkov} (2007-09-09 12:59:00) [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;
Jimmy (2007-09-09 12:57:00) [8]То есть как реализовать это в методах доступа к свойствам класса?
{RASkov} (2007-09-09 12:52:00) [9]> [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:00) [10]Как?
engine (2007-09-09 12:49:00) [11]Так, а в чем собственно проблема-то?
Реализуй это в методах доступа к свойствам класса.
Jimmy (2007-09-09 12:44:00) [12]А поконкретней нельзя?
engine (2007-09-09 12:38:00) [13]Рэй Конопка "Создание оригинальных компонент в среде DELPHI"