Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.04;
Скачать: 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 вся ветка

Текущий архив: 2002.11.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
14-11453
IronHawk
2002-10-12 00:57
2002.11.04
Лампочка !!!


1-11292
Fly`
2002-10-23 13:54
2002.11.04
RichEdit - PrintPreview.


1-11306
Kurt
2002-10-23 11:44
2002.11.04
Как мне перейти из одного элемента редактирования в другое програ


1-11231
Cossys
2002-10-24 17:01
2002.11.04
Запуск внешнего DOS-приложения


1-11286
MsGuns
2002-10-23 12:42
2002.11.04
В Design-mode пропали линейки прокрутки фориы