A megoldáshoz a TypInfo unit metódusait használjuk fel. Ennek megfelelően az alkalmazás uses listájában hivatkoznunk kell erre az egységre is.
Az első metódus a GetPropList, melynek deklarációja a következő:

GetPropList
Function GetPropList(
TypeInfo : PTypeInfo;
PropList : PPropList
) : Integer;
A metódussal lekérdezhetjük a megadott objektum valamennyi tagját reprezentáló mutatót, és egy listában eltároljuk.
Paraméterek
TypeInfo : PTypeInfo
A típus, melynek tagjaira kíváncsiak vagyunk. Jelen esetben ez a TForm objektum, valamint ennek komponensei.
PropList : PPropList
A lista, mely a mutatókat tárolja.
Visszatérési érték
A visszatérési érték a lekérdezett tagok száma.
Amennyiben rendelkezésre állnak a mutatók, akkor a GetMethodProp metódus alkalmas arra, hogy a megadott mutató által reprezentált tag adatait visszaadja. Ennek a metódusnak a következő a deklarációja:
A metódusnak két megvalósítása létezik, az első szerint az adott tagra vonatkozó információkat egy TPropInfo típusban adhatjuk át. Mi most a másik megvalósítást alkalmazzuk, miszerint a tag nevét adjuk meg a második paraméterben.

GetMethodProp
Function GetMethodProp(
Instance: TObject;
const PropName: string
): TMethod;
Egy TMethod nevű típusban adja vissza az adott tag információit.
Paraméterek
Instance: TObject
Az objektum, melynek metódusára vagy property-jére kíváncsiak vagyunk.
const PropName: string
A tag neve.
Visszatérési érték
A kapott eredmény a következő deklarációjú rekordban tárolódik:
TMethod = packed record
Code, Data: Pointer;
end;
Amennyiben a Code mutató nem NIL, akkor az adott eseményre deklaráltunk kezelőmetódust. Ezt használjuk fel a példában is.
A mellékelt példában 4 darab eseményt deklaráltunk a TForm és a TMemo komponensünk számára. Ezeket kérdezzük le.
Az első lépés, hogy GetPropList metódust meghívjuk a TForm objektummal, hogy az űrlap objektum-eseményeit lekérdezhessük.
y := GetPropList(Self, pl);
A kapott számot felhasználva egy ciklussal végigmegyünk a TPropList lista elemein, melyet a metódussal feltöltöttünk.
Mivel itt most csak az események érdekelnek minket, megvizsgáljuk, hogy az adott elem neve az „On” karakterlánccal kezdődik-e. Amennyiben nem, akkor nem vizsgáljuk az adott elemet.
for x := 0 to y - 1 do begin
if Copy(pl[x].Name, 1, 2) <> 'On' then Continue;
Amennyiben igen, akkor a tag nevével meghívjuk a GetMethodProp metódust. Ha a TMethod rekord Code mezőjének értéke nem NIL, akkor a TMemo komponensben megjelenítjük az objektum nevét, és az adott tag nevét.
if GetMethodProp(Self, pl[x].Name).Code <> nil then
Memo1.Lines.Add(Self.Name + ' - ' + pl[x].Name);
Ezt követően végigmegyünk a TForm objektum komponensein, és sorban elvégezzük a fenti műveletet, csak a metódusoknak a komponensek objektumait adjuk át.
for z := 0 to Self.ComponentCount - 1 do begin
y := GetPropList(Self.Components[z], pl);
for x := 0 to y - 1 do begin
if Copy(pl[x].Name, 1, 2) <> 'On' then Continue;
if GetMethodProp(Self.Components[z], pl[x].Name).Code <> nil then
Memo1.Lines.Add(Self.Components[z].Name + ' - ' + pl[x].Name);
...
A listában megjelenik, hogy három eseményt a TForm, míg egy eseményt a TMemo komponenshez hoztunk létre.