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

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

SpeedButton [D2005, XP]


авыф ©   (2007-06-20 17:18:00) 

Вы не подскажете как получить доступ к свойству Color(он protected) из программы...
т.е. мне надо задать по клику на этой кнопке чтоб у нее цвет фона изменился...
как это сделать неподскажете, а то выдает ошибку: Cannot access protected symbol %s.%s
как поборать эту ошибку?


авыф   (2007-06-21 10:35:00) [1]


> Однокамушкин

тогда наверное лучше использовать другие компоненты, я правильно понял?
ладно, будем искать более простые в этом плане компоненты... спасибо всем!


авыф   (2007-06-21 10:31:00) [2]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Buttons;

type
 TMySpeed = class(TSpeedButton)
end;

type
 TForm1 = class(TForm)
   SpeedButton1: TMySpeed;
   procedure SpeedButton1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
implementation

{$R *.dfm}

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
 TMySpeed(SpeedButton1).Color:=clRed;
end;

end.

а так ошибка возникает:
класс TSpeedButton не найден...


Однокамушкин   (2007-06-21 10:27:00) [3]


> авыф   (21.06.07 09:54) [2]
> почему-то не работает...
> подскажите что не так делаю?

Если посмотреть исходники TSpeedButton, а конкретно - его метода Paint, легко убедиться, что свойство Color используется в одном случае: при рисовании кнопки с Flat=True и Transparent=False в ненажатом состоянии, причём когда мышь не находится над кнопкой, во всех остальных случаях значение Color просто игнорируется... Поставьте нужные значения Flat и Transparent и сами увидите эффект... Так что если вам нужно полностью перекрасить кнопку, таким простым способом тут не обойтись, надо делать полноценного наследника от TSpeedButton и самому переписвать там метод Paint...


iXT   (2007-06-21 10:14:00) [4]

1.
>  SpeedButton1: TSpeedButton;

2.


iXT   (2007-06-21 10:14:00) [5]

2. > type
> TMySpeed = class(TSpeedButton)
> end;

3. Делай выводы :)


авыф   (2007-06-21 10:01:00) [6]


> iXT

ок... =)
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons;

type
TForm1 = class(TForm)
  SpeedButton1: TSpeedButton;
  procedure SpeedButton1Click(Sender: TObject);
private
  { Private declarations }
public
  { Public declarations }
end;

type
TMySpeed = class(TSpeedButton)
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

//............

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
i: Integer;
begin
TMySpeed(SpeedButton1).Color:=clRed;
end;

end.


iXT   (2007-06-21 09:57:00) [7]

Многоточие пропустил


авыф   (2007-06-21 09:54:00) [8]

почему-то не работает...
подскажите что не так делаю?
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Buttons;

type
 TForm1 = class(TForm)
   SpeedButton1: TSpeedButton;
   procedure SpeedButton1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

type
 TMySpeed = class(TSpeedButton)
end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
 i: Integer;
begin
 TMySpeed(SpeedButton1).Color:=clRed;
end;

end.


Германн   (2007-06-20 17:35:00) [9]


> Вы не подскажете как получить доступ к свойству Color(он
> protected)

type
 TMySpeedButton = class(TSpeedButton)
 end;
 ...
 TMySpeedButton(SpeedButton1).Color:=...


Наверх

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