- Delphiartiklar, tips, forum, länksamling - 

      

START | DELPHI | LÄNKARGÄSTBOK 




 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: 1222
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; 

 
 
© Copyright 2005 - Staffan Berg
- Alla rättigheter förbehålles -