Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Цветная кнопка ;TSpeedButton и иже с ними [D5, Win2k]


Stocker! ©   (2002-10-22 12:24:00) 

Кто подскажет как сделать кнопочку цветной в зависимости от значения какой либо переменной делаю так
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 или при нажатии на кнопку она становится цветом фона ... в чем причина?


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

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

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


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

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


Separator   (2002-10-23 11:34:00) [3]


> Stocker! (23.10.02 11:30)

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


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

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


Separator   (2002-10-23 11:24:00) [5]

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


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

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


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

Чтобы перехватывать событие 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 07:49:00) [8]

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


Skier   (2002-10-22 12:55:00) [9]

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

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


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

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


Snake   (2002-10-22 12:36:00) [11]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо