Вниз
Скачать: 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
3-1180629087
GanibalLector
2007-05-31 20:31
2007.10.07
запрос к разным базам


15-1189070224
MaxIvanych
2007-09-06 13:17
2007.10.07
Matlab и Delphi


3-1180678681
TCrash
2007-06-01 10:18
2007.10.07
Может ли FB вычислять строковые значения


15-1189175731
Верующий
2007-09-07 18:35
2007.10.07
Что будет без ИНН?


3-1180855837
npu3pak_kz
2007-06-03 11:30
2007.10.07
Копирование/перемещение строк в таблице MS Access




   Наверх