Delphi - Paradox táblához jelszavat rendelő komponens készítése

forráskód letöltése
A ParadoxPassword egy speciális komponens, amellyel jelszót rendelhetünk hozzá egy tetszőleges paradox adattáblához. A komponens láthatatlanul beépül az adattábla és az alkalmazás közé. Egy egyszerű metódushívás segítségével megvalósítja a jelszó beállítását. Ezzel megkímél minket a háttérben zajló, „bonyolult és nehézkes” BDE API ismeretétől és használatától.
A mellékelt példaprogram megnyitása előtt a ParadoxPassword.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A ParadoxPassword komponens egy láthatatlan komponens, amely segítségével jelszót rendelhetünk hozzá egy tetszőleges paradox adattáblához.
Ahhoz, hogy a komponenst használni tudjuk a következő lépések szükségesek:
  • Helyezzünk el a Form-on egy TTable komponenst, majd ennek a komponensnek a segítségével létesítsünk kapcsolatot az adattáblával. A példaprogramban ez az Adatok.db tábla.
  • Helyezzük el a Form-on a ParadoxPassword komponenst.
  • A ParadoxPassword komponens Table tulajdonságában adjuk meg az előbb felvett TTable komponens nevét. (Ez listából kiválasztható, ha a két komponens egy Form-on helyezkedik el.)
  • A ParadoxPassword komponens Password tulajdonságába írjuk be a használni kívánt jelszót, majd hívjuk meg az Execute metódust.
Az Execute függvény
A függvény hajtja végre a Password tulajdonságban megadott jelszó hozzárendelését a táblához.
A függvényt azután kell meghívni, miután beállítottuk a Table és a Password tulajdonságot.
A függvény visszatérési értéke Boolean típusú. True, ha a jelszó beállítása sikeres volt, False, ha sikertelen.
Az Execute függvény működése
Első lépésben a függvény bezárja a Table tulajdonságban megadott táblát, majd megnyitja azt kizárólagos használatra. A jelszó hozzáfűzés olyan művelet, amely a tábla felépítését változtatja, ezért van szükség kizárólagos használatra.
with fTable do
  begin
  if Active and (not Exclusive) then Close;
  if (not Exclusive) then Exclusive := True;
  if (not Active) then Open;
  hDB := DBHandle;
  Close;
end;
A hDb változó hDBIDb típusú. Ez a típus a BDE unit része. A BDE függvények nagy részének szüksége van egy azonosítóra, ezt az azonosítót tároljuk el a hDb változóban. Egy adatbázis akkor kapja meg ezt az azonosító értéket, amikor megnyitjuk. Ezt az értéket a DBHandle szolgáltatja.
Egy tábla szerkezetét a CRTblDesc (tábla leíró) írja le. Szükségünk van egy pointerre, amelyben az ehhez szükséges adatokat beállítjuk és tároljuk. Ez lesz a pTblDesc változó.
GetMem(pTblDesc, SizeOf(CRTblDesc));
FillChar(pTblDesc^, SizeOf(CRTblDesc), 0);
with pTblDesc^ do
   begin
      StrPCopy(szTblName, StrToOem(fTable.TableName));
      szTblType := szParadox;
      StrPCopy(szPassword, StrToOem(Password));
      bPack := True;
      bProtected := True;
   end;
A tábla tulajdonságainak módosítása futási időben a DbiDoRestructure BDE API függvénnyel lehetséges. A függvény meghívása során paraméterként kell átadnunk a HDb és a pTblDesc változókat.
Néhány tanács
Ha a jelszó beállítása sikertelen, az valószínűleg abból adódhat, hogy egy másik program, esetleg egy másik felhasználó is használja az adott adattáblát.
Ha egy paradox táblához már jelszót rendeltünk, akkor nem tudjuk használni a táblát, csak a jelszó ismeretében. Ez vonatkozik a megnyitására és új jelszó hozzárendelésére egyaránt. Ezért kétszer nem is állíthatjuk be a tábla jelszavát egymás után, csak ha közben megnyitottuk a táblát az előzőleg beállított jelszó használatával.