Forum
Grundkurs
»Introduktion
»Snabbguide
»Komponenter
»Händelser
»Strängar
»Räkna med Delphi »Egna
typer
»Selektion
»Iteration
»Menyer
»Funktioner
»Arraystrukturer
Tips & Tricks
»Nya tips
»Blandat
»Databaser
»Filer
»Forms
»Grafik
»Internet
»Komponenter
»Matematik
»Multimedia
»Objekt/ActiveX
»Skrivare
»Strängar
»System
»Mest lästa tips
Artiklar
»Delphi och ADO
»Bygga en DLL
»Skapa en enkel rapport
»Hantera registret
»Enheter, units
»Klassen TCanvas
»Använd LookUp Controls
Nya
tips
Lägg
till tips
Delphilänkar
Gästbok
|
|
|
|
Implementera en händelsehanterare till alla komponenter
|
Kategori: Komponenter
Inlagt: 2005-09-17
Läst: 1319
Inlagt av: Staffan Berg
|
Beskrivning |
Detta exempel visar hur du kan tilldela ett OnContextPopup-event till alla komponenter under körning med metoden SetMethodProp.
|
Kod |
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); begin with Sender as TComponent do ShowMessage(Name + ' right-clicked!'); end; procedure TForm1.AssignOnContextPopupEvent; var i: Integer; PropInfo: PPropInfo; Method: TMethod; PEvent: ^TContextPopupEvent; begin for i := 0 to ComponentCount - 1 do begin PropInfo := GetPropInfo(Components[i].ClassInfo, 'OnContextPopup'); if (PropInfo <> nil) and (PropInfo^.PropType^^.Kind = tkMethod) then begin Method := GetMethodProp(Components[i], PropInfo); if not Assigned(Method.Code) then begin 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;
|
|
|