![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Цветная кнопка ;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, если не ошибаюсь, вот его-то и нужно перекрывать и в нем отрисовывать то, что нужно.