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

Цветная кнопка TSpeedButton и иже с ними   Найти похожие ветки 

 
Stocker!   (2002-10-22 12:24) [0]

Кто подскажет как сделать кнопочку цветной в зависимости от значения какой либо переменной делаю так
procedure TForm1.Button1Click(Sender: TObject);
var Rect1:Trect; old:TBrush;flag:boolean;
begin
if flag then
begin
Rect1:=Rect(Form1.SpeedButton1.Left,Form1.SpeedButton1.Top,
Form1.SpeedButton1.Left+Form1.SpeedButton1.width,
Form1.SpeedButton1.top+Form1.SpeedButton1.height);
old:=Canvas.Brush;
Canvas.Brush.Color:=clBlue;
Form1.Canvas.FillRect(Rect1);
Canvas.Brush:=old;
end;
обрабатывается клавиша Button1 закрашиваем SpeedButton1, но при подставлении этого кода для SpeedButton или при нажатии на кнопку она становится цветом фона ... в чем причина?


 
Snake ©   (2002-10-22 12:36) [1]

Дело в том, что нужно перерисовывать кнопку в событии что-то вроде OnPaint. Ты попробуй поперемещай форму за границы экрана - она тоже обесцветится. У кнопки есть метод Paint, если не ошибаюсь, вот его-то и нужно перекрывать и в нем отрисовывать то, что нужно.


 
Stocker!   (2002-10-22 12:52) [2]

2 Snake: события OnPaint и метода Paint для SpeedButton нет, только для самой формы, чего делать?


 
Skier ©   (2002-10-22 12:55) [3]

>Stocker!
Советую : не париться, а
сходить на www.torry.net,
там этих кнопок навалом...

Заодно и посмотришь реализацию...


 
Stocker!   (2002-10-23 07:49) [4]

а с кодом значит здесь никто не подскажет


 
Andrey007   (2002-10-23 09:52) [5]

Чтобы перехватывать событие OnPaint у TSpeedButton, надо написать наследника TSpeedButton.

...
type
TNewSpeedButton=class(TSpeedButton)
private
FOnPaint: TNotifyEvent;
public
property Canvas;
protected
procedure Paint; override;
published
property OnPaint: TNotifyEvent read FOnPaint write FOnPaint;
end;

implementation

procedure TNewSpeedButton.Paint;
begin
if Assigned(FOnPaint) then FOnPaint(Self)
end;


 
Stocker!   (2002-10-23 11:08) [6]

2Andrey007 Может я чего то недопонимаю нелбзя поподробнее разжевать...
Как мне создасть SpeedButton на форме TForm1 чтобы класс у неё был не TSpeedButton, а TNewSpeedButton


 
Separator ©   (2002-10-23 11:24) [7]

with TNewSpeedButton.Create(self) do
begin
Parent:= self;
Left:= 10;
Top:= 10;
Width:= 32;
Height:= 32;
Name:= "Button2"
end;


 
Stocker!   (2002-10-23 11:30) [8]

2Andrey007 Может я чего то недопонимаю нелбзя поподробнее разжевать...
Как мне создасть SpeedButton на форме TForm1 чтобы класс у неё был не TSpeedButton, а TNewSpeedButton


 
Separator ©   (2002-10-23 11:34) [9]


> Stocker! (23.10.02 11:30)

Смотри что я написал


 
Stocker!   (2002-10-23 11:39) [10]

2 Sepearator Добавил этот код в TForm1.Create но на форме кнопочка не появилась
P.S. Извиняюсь за флейм


 
Separator ©   (2002-10-23 11:43) [11]

просто у Andrey007 ошибка.

procedure TNewSpeedButton.Paint;
begin
if Assigned(FOnPaint) then FOnPaint(Self);
inherited Paint
end;



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

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



Память: 0.47 MB
Время: 0.019 c
7-11518
Flagman
2002-09-01 07:48
2002.11.04
системные события W9x - W2000 - WXP


1-11261
Dog
2002-10-23 10:52
2002.11.04
Динамическое распределение памяти


1-11198
Lnstr
2002-10-24 20:21
2002.11.04
В TStringGrid надо покрасить столбец или строку или ячейку


14-11444
Rouse_
2002-10-10 01:02
2002.11.04
Огонь, вода и медные трубы


1-11269
Commodore
2002-10-23 11:47
2002.11.04
ListBox как элемент ActiveX




   Наверх