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

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

Как узнать, кто является Sender'ом? [D7, XP]


Alex_C ©   (2008-06-20 10:38:00) 

Допустим: при вызове PupUp меню, нужно изменить цвет или font компонента, который его вызвал.
Пробовал так:
(Sender as TControl).Font := FontDialog1.Font - возникает ошибка при компиляции "Undeclared identifier: font", хотя у TContro по хелпу св-во font есть.


Игорь Шевченко   (2008-06-20 11:06:00) [1]


> Самое простое так:


> (PopupMenu.PopupComponent as TLabel).Font.Assign(FontDialog.
> Font);


Самое некривое через GetObjectProp и Assign


Ega23   (2008-06-20 11:04:00) [2]


> (PopupMenu.PopupComponent as TLabel).Font.Assign(FontDialog.
> Font);


if (PopupMenu.PopupComponent is TLabel) then
TLabel(PopupMenu.PopupComponent).Font.Assign(...)


Alex_C   (2008-06-20 11:02:00) [3]

Всем спасибо! Все понял!
Самое простое так:

(PopupMenu.PopupComponent as TLabel).Font.Assign(FontDialog.Font);


TUserClass   (2008-06-20 11:01:00) [4]

Удалено модератором


Ega23   (2008-06-20 10:58:00) [5]


> тока не знаю хорошо ли :


Не хорошо.


TUserClass   (2008-06-20 10:52:00) [6]

Можно так ... тока не знаю хорошо ли :

type
 TForm1 = class(TForm)
   Label1: TLabel;
   Button1: TButton;
   procedure Label1Click(Sender: TObject);
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
   procedure ChangeFont (Sender : TObject);
 end;

var
 Form1: TForm1;

implementation
procedure TForm1.ChangeFont (Sender : TObject);
begin
 If Sender.ClassName = 'TLabel' then begin
   (Sender as TLabel).Font.Style := (Sender as TLabel).Font.Style + [fsBold];
 end else If Sender.ClassName = 'TButton' then begin
   (Sender as TButton).Font.Style := (Sender as TButton).Font.Style + [fsBold];
 end else If Sender.ClassName = ...
end;
{$R *.dfm}

procedure TForm1.Label1Click(Sender: TObject);
begin
 ChangeFont (Sender);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 ChangeFont (Sender);
end;


Ega23   (2008-06-20 10:43:00) [7]


> хотя у TContro по хелпу св-во font есть.


Только оно у TControl - protected property


clickmaker   (2008-06-20 10:40:00) [8]

PopupComponent?


Наверх

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