Consultar a lista de eventos que possuem tratadores de eventos anexados
No Delphi para Win32, um evento de um objeto deve ser tratado por um método (tratador de evento). Aqui está como consultar a lista de eventos de um objeto, que possuem tratadores de evento anexados.
Utilize o código a seguir no evento OnCreate de um formulário. Insira dois ListBox e execute. O ListBox1 possui o nome de todos os eventos do objeto Form1, enquanto o ListBox2 possui apenas aqueles que têm um tratador de evento anexado.
uses Typinfo;
procedure TForm1.FormCreate(Sender: TObject) ;
var
Count, Loop: Integer;
List: PPropList;
method : TMethod;
begin
Count := GetPropList(TypeInfo(TForm1), tkMethods, nil) ;
GetMem(List, Count * SizeOf(PPropInfo)) ;
try
GetPropList(TypeInfo(TForm1), tkMethods, List) ;
for Loop := 0 to Pred(Count) do
begin
Listbox1.Items.Add(List[Loop]^.Name) ;
method := GetMethodProp(Form1, List[Loop]^.Name) ;
if Assigned(method.Code) and Assigned(method.Data) then
begin
ListBox2.Items.Add(List[Loop]^.Name) ;
end;
end;
finally
FreeMem(List, Count * SizeOf(PPropInfo))
end;
end;