{
This example shows how to assign a OnContextPopup event
handler to all components at runtime using SetMethodProp().
(Here: OnContextPopup event handler)
}private{ Private declarations }procedure AssignOnContextPopupEvent;
procedure OnContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
public{ Public declarations }end;
var
Form1: TForm1;
implementation{$R *.dfm}uses
TypInfo;
procedure TForm1.OnContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
beginwith Sender as TComponent do
ShowMessage(Name + ' right-clicked!');
end;
procedure TForm1.AssignOnContextPopupEvent;
var
i: Integer;
PropInfo: PPropInfo;
Method: TMethod;
PEvent: ^TContextPopupEvent;
beginfor i := 0 to ComponentCount - 1 dobegin
PropInfo := GetPropInfo(Components[i].ClassInfo, 'OnContextPopup');
if (PropInfo <> nil) and (PropInfo^.PropType^^.Kind = tkMethod) thenbegin
Method := GetMethodProp(Components[i], PropInfo);
ifnot Assigned(Method.Code) thenbegin
PEvent := @Method.Code;
PEvent^ := OnContextPopup;
Method.Data := Self;
SetMethodProp(Components[i], PropInfo, Method);
end;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
AssignOnContextPopupEvent;
end;
Статья Присвоить одно событие всем компонентам раздела Компоненты и Классы Свойства и События может быть полезна для разработчиков на Delphi и FreePascal.
Комментарии и вопросы
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.