Форум: "Начинающим";
Текущий архив: 2007.10.07;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.10.07;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.039 c