
A mellékelt példaprogram megnyitása előtt a SpecMemo.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component – Install Component menüpontot.
Az új komponens tehát a TMemo osztályból származik. A komponenst kiegészítjük egy property-vel, melyből le lehet kérdezni azt a karakterláncot, mely fölött a kurzor éppen tartózkodik. A megvalósításhoz a TMemo osztály MouseMove eseményét kell felülírnunk.
A property mellett egy új eseményt is létrehozunk a komponensben, mely minden esetben bekövetkezik, amikor a kurzort mozgatjuk a komponens kliensterülete fölött. Deklarációik a következők:
TSpecMemo = class(TMemo)
private
{ Private declarations }
FWordUnderCursor : string;
FOnWordChange: TNotifyEvent;
...
A művelet során a Perform metódust használjuk fel, melynek segítségével közvetlenül küldhetünk üzeneteket a kontrol ablakfüggvényének. A metódus első paraméterében kell megadnunk az üzenet-konstanst, a második és harmadik paraméterében pedig az üzenet paramétereit.
A művelet sikere érdekében az EM_CHARFROMPOS üzenetet juttatjuk el kontrolhoz, mellyel lekérdezhetjük az aktuális kurzorpozíciót.
A metódus deklarációja a következő:

Perform
Osztály:
function Perform(
Msg: Cardinal;
WParam,
LParam: Longint
): Longint;
Üzenetküldés közvetlenül a kontrolnak.
Paraméterek
Msg: Cardinal
Az üzenet-konstans.
WParam
Első paraméter.
LParam: Longint
Második paraméter, mely jelen esetben a kurzor aktuális pozíciója, paraméterré alakítva.
Visszatérési érték
A kontrol szövegében azon karakter indexe, mely fölött a kurzor tartózkodik.
A komponens MouseMove eseménykezelőjében első lépésként meghívjuk a metódust, hogy a pozíció a rendelkezésünkre álljon.
i:=LoWord(Perform(EM_CHARFROMPOS, 0, MakeLParam(X, Y)));
Ezt követően némi számítás eredményeképpen megkaphatjuk a pozícióhoz tartozó szó kezdő- és végpozícióját.
while (self.Text[i] <> ' ') and (i > 0) do Dec(i);
s := i+1;
while (self.Text[i+1] <> ' ') and (i+2 < Length(self.Text)) do Inc(i);
e := i+1;
Majd létrehozzuk azt az eseményt, amelyre majd a felhasználó alkalmazásban egy kezelőmetódust deklarálunk, a kijelölt szót lekérdezendő.
if Assigned(FOnWordChange) then begin
Self.FOnWordChange(Self);
end;
Végül a szót értékül adjuk a komponens új property-jének, majd a szöveget ki is jelöljük.
FWordUnderCursor := Copy(Text, s, e-s);
SelStart := s-1; SelLength := e-s;
Az alkalmazásban már csak a kezelőt kell létrehoznunk, hogy a címkén megjeleníthessük az adott szót.
procedure TForm1.SpecMemo1WordChange(Sender: TObject);
begin
label1.Caption := 'A kijelölt szó: ' + Trim(SpecMemo1.WordUnderCursor);
end;