Delphi - Funkcióbillentyűket kezelő TEdit komponens

forráskód letöltése
Mellékelt példában olyan komponenst készítünk a TEdit-ből, mely képes értelmezni a funkcióbillentyűk lenyomását és így például az F6 lenyomásakor a vágólapra másolja a TEdit kijelölt tartalmát, vagy az F8 hatására a vágólap szövegét másolja be a TEdit-be. A mellékelt példaprogram megnyitása előtt a FunctionEdit.pas-ban lévő komponenst telepítenie kell a Delphi alá.

A megvalósításhoz csupán arra van szükségünk, hogy az új komponensen belül érzékelni tudjuk azt, hogy a felhasználó milyen gombot nyomott le.

Ehhez legegyszerűbb megoldás, hogy felülírjuk a komponens ablak kezelő eljárását a WndProc-ot.

Amikor ez meghívásra kerül, akkor ellenőrizzük, hogy a kapott üzenet egyezik-e a WM_KEYDOWN üzenettel. Ha igen, akkor már csak azt kell vizsgálnunk, hogy az általunk megadott funkció billentyű lett-e lenyomva vagy sem. Ha igen, akkor csak végre kell hajtanunk a TEdit megfelelő funkcióját, amit az adott gombhoz rendelni szeretnénk.
procedure TFunctionEdit.WndProc(var Message: TMessage);
begin
  inherited;
  case Message.Msg of
    WM_KEYDOWN: begin
      case Message.WParam of
        VK_F5: SelectAll;
        VK_F6: CopyToClipboard;
        VK_F7: CutToClipboard;
        VK_F8: PasteFromClipboard;
        VK_F9: Undo;
        VK_F11: ClearSelection;
        VK_F12: Clear;
      end;
    end;
  end;
end;