HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Adatbevitel funkcióbillentyűkkel


Példaprogram letöltése

11799 bájt

Mellékelt példában továbbfejlesztjük a TDBEdit komponenst. Létrehozunk hozzá egy Functions nevű property-t, melyen keresztül tetszőleges számú billentyűkombinációt rendelhetünk a komponenshez. Amikor a komponens a megadott billentyűkombinációk egyikét érzékeli, akkor egy szintén előre megadott szöveggel tölti fel a TDBEdit-et. Így a gyakran ismétlődő szavakhoz funkcióbillentyűt rendelhetünk és ezáltal az adatbevitel gyorsaságát növelhetjük.
A mellékelt példaprogram megnyitása előtt a FunctionDBEdit.pas-ban lévő komponenst telepítenie kell a Delphi alá.

A használathoz kattintsunk a Functions property-re. Itt egy tömbbe tetszőleges számú elemet felvehetünk. Minden elem két újabb property-vel rendelkezik. A ShortCut property-ben adható meg a kívánt funkcióbillentyű, míg a Value property-ben a hozzárendelt szöveg.

Ezek után, amikor az adott TDBEdit az aktív, vagyis birtokolja a fókuszt, akkor a megadott billentyűkombinációk figyelését a komponens biztosítja és érzékelése esetén a kért szöveget beilleszti.

A billentyűkombináció lenyomásának figyeléséhez a komponens KeyDown metódusát írjuk felül. Amikor ez meghívásra kerül, akkor egy ciklus segítségével végignézzük a Functions tömböt és ha találunk ott olyan billentyűkombinációt, mely megfelel az aktuálisan lenyomottnak, akkor egy s nevű változóba rögtön el is tároljuk a hozzátartozó szöveget.

Második lépésként ellenőriznünk kell, hogy a TDBEdit-hez kapcsolt tábla szerkesztő, vagy beszúró módban van-e. Ha nem, akkor egy Edit metódus hívásával szerkesztő módba helyezzük. Erre azért van szükségünk, mert csak így tudjuk módosítani a tábla tartalmát, különben hibajelzést kapnánk, mikor végső lépésként a TDBEdit Text property-ének értékül adjuk az adott funkcióbillentyűhöz rendelt szöveget.
procedure TFunctionDBEdit.KeyDown(var Key: Word; 
      Shift: TShiftState);
var
  s: string;
  i: integer;
  sc: TShortCut;
begin
  inherited;
  s:='';
  sc:=ShortCut(Key, Shift);
  for i:=0 to FFunctions.Count-1 do begin
    if FFunctions[i].ShortCut=sc then begin
      s:=FFunctions[i].Value;
    end;
  end;
  if s<>'' then begin
    if not (DataSource.State in [dsEdit, dsInsert]) then begin
      DataSource.DataSet.Edit;
    end;
    Text:=s;
  end;
end;



Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2001 évkönyv 89. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |