HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Form-ok létrehozása


Paradox használata hálózatban 2. rész

Példaprogram letöltése

47218 bájt

Ebben a részben létrehozzuk azt a kódot, amely a háttérben csatlakozik a jelszóval levédett paradox táblákhoz. Elkészítjük a bejelentkező ablakot, ahol az orvosoknak ki kell választani saját nevüket, majd jelszavuk megadása után beléphetnek a betegjeiket megjelenítő ablakba. Elkészítjük az alkalmazás összes Form-ját, de az adatfelvitel funkciót csak a következő részben építjük be.

Először hozzuk létre a kódot, amely a háttérben képes megnyitni a jelszóval védett adattáblákat, anélkül, hogy a felhasználó bármilyen jelszót kérő dialógusablakot is látna.
Válasszuk ki a DataModule-t (DM). Az előző részben aktívra állított táblák Active property-jét állítsuk vissza hamisra. A DM-hez tartozó forráskódban hozzunk létre egy új metódust, az alábbi implementációval:
procedure TDM.PdxPassword(Sender: TObject; var Continue: Boolean);
begin
  Continue:=True;
  Session.AddPassword('animare');
end;
A DM OnCreate eseményében helyezzük el az alábbi sort:
Session.OnPassword:=PdxPassword;
Majd gondoskodjuk az adattáblák eléréséről és megnyitásáról.
tOrvosok.TableName:=ExtractFilePath(Application.ExeName)+'Data\orvosok.db';
tOrvosok.Open;
Ezután próbáljuk ki a programot. Azt vesszük észre, hogy megjelenik a Form1, anélkül, hogy az adattáblák bármilyen jelszót is kérnének.
Most hozzuk létre az első ablakot, amely az orvos kiválasztására szolgál.
Az ablakban egy DBGrid-re és két gombra (OK, Kilépés) van szükségünk. A Form1-et nevezzük el frmOrvosok-nak. A hozzá tartozó forráskódban vegyük fel a hivatkozást a DataModule-re, a DBGrid-et DataSource property-jében adjuk meg a DM.dsOrvosok DataSource-t.
A DBGrid formázásához ideiglenesen állítsuk igazra a tOrvosok Active értékét.
A DM-en kattintsunk duplán a tOrvosok fölött. Megjelenik egy kis ablak, ami fölött kattintsunk az egér jobb oldali gombjával. Megjelenik egy helyi menü, ahol válasszuk az Add all fields menüpontot. A kis ablakban megjelennek a mezőnevek. Ha az egyikre rákattintunk, akkor az Object Inspectorban módosíthatjuk annak tulajdonságait. Ami számunkra most érdekes, az a mezőknek a DisplayLabel tulajdonsága, azaz a megjelenítési felirata. Ez a felirat jelenik meg például a DBGrid-ekben, az adott oszlop címsorában. Az orvosok táblából csak az orvos nevét fogjuk megjeleníteni, így elegendő ezt az egy tulajdonságot átírnunk.
Zárjuk be a mezőket megjelenítő ablakot. Ellenőrizzük, hogy a tOrvosok Active property-jének értéke igaz-e, majd térjünk vissza az frmMain DBGrid1-jéhez. Kattintsunk duplán a DBGride-n. A megjelenő kis ablakban kattintsunk az Add all fields ikonra. Az OKod és Jelszo mezőket töröljük a listából, csak az ONev értékét akarjuk megjeleníteni. Ha rákattintunk az ONev elemre, akkor az Object Inspectorban módosíthatjuk az adott oszlop tulajdonságait. A Width értékét módosítsuk 300-ra, az kb. elegendő szélességű lesz.
A DBGrid1 Options property-jében, a dgEditing értékét állítsuk hamisra, hogy a táblázat tartalmát ne lehessen szerkeszteni.
Sokan megfeledkeznek a Ctrl+Del billentyűkombinációról. Ha valaki DBGrid-ben használná az adott billentyűkombinációt, akkor a DBGrid minden kérdezés nélkül kitörölné ezt a rekordot. Ennek kivédésre a DBGrid1 OnKeyDown eseményében helyezzük el az alábbi kódot:
if (ssCtrl in Shift) and (Key=VK_DELETE) then
  Key:=0;
A fenti kód letiltja a Ctrl + Del kombinációt.
Az OK gomb lenyomásához készítsünk egy dialógusablakot, amely megkérdezi a bejelentkező orvos jelszavát. Az ablakot dinamikusan hozzuk létre.
A jelszó dialógus és a további Form-ok BorderStyle értékét célszerű bsDialog-ra állítanunk, így nem kell majd foglalkoznunk a Form-ok méretezésével, minimalizálásával, stb.
Ahhoz hogy egy Form dinamikus legyen, a Project – Options menüpont kiválasztása után, a Forms fülön, az Auto-create forms listából át kell helyeznünk a másikba. A DM-et pedig helyezzük az frmMain elé. Fontos, hogy a program indulásakor a DataModule hamarabb jöjjön létre.


Egy dinamikus Form-ot az alábbi módon nyithatunk meg, majd szabadíthatunk fel:
frmPassword:=TfrmPassword.Create(Application);
frmPassword.ShowModal;
frmPassword.Free;
A dinamikus Form-használat nagymértékben csökkenti alkalmazásaink gépigényét.
Az orvosok felvitelét nem a programból végezzük el, ez a rendszergazdák dolga nem a felhasználóké. Írhatunk hozzá külön programot, a jelen példában az orvosokat a DatabaseDesktop programból visszük fel.
Sokat javíthat alkalmazásainkon, ha játszunk a parancsgombok Enabled tulajdonságával. Mindig csak azok a gombok legyenek használhatók, amelyeknek az adott állapotban van értelmük. Például ne legyen aktív az OK gomb, ha még egyetlen orvos sem szerepel a táblában. Ha erre figyelünk, rengeteg más, felesleges ellenőrzéstől megóvhatjuk magunkat.
Ha az adott Form OnCreate eseményében beállítjuk a gombok kezdeti állapotát, akkor a változásokat csak nyomon kell követnünk egy esetleges törlés vagy új adatfelvitel esetén. A kezdeti állapot nyilván attól függ, hogy az adott táblában vannak-e rekordok, vagy sem.
  if DM.tOrvosok.RecordCount>0 then
    Button1.Enabled:=True
  else
    Button1.Enabled:=False;
A jelszót kérő dialógusablakból csak akkor lépünk tovább, ha a megadott jelszó helyes.
frmBetegek:=TfrmBetegek.Create(Application);
frmBetegek.ShowModal;
frmBetegek.Free;
A betegek adatait megjelenítő ablakban szükségünk van egy DBGrid komponensre, és néhány gombra: Kiválaszt, Új, Módosít, Töröl, Vissza. A Form létrehozásánál és a Grid formázásánál ugyanúgy kell eljárnunk, mint azt az orvosokat megjelenítő ablak esetében tettük. Itt is azokat az adatokat kell megjelenítenünk, amelyek a legfontosabbak: Név, SzulIdo, SzulHely. A többi adatot az ablak alján célszerű megjeleníteni DBLabel-ek segítségével.
Ne feledkezzünk meg a gombok megfelelő állapotának kezeléséről sem. A betegeket megjelenítő ablakban már sokkal több gombra kell figyelnünk. Egyelőre csak a Create eseményben helyezzük el a megfelelő kódot, a felvitelt és a törlést érintő kódokkal a következő részben foglalkozunk.
Az Új és Módosít feliratú gombok kezeléséhez létrehozunk egy új ablakot. Egyetlen ablakban kezeljük le mindkét eseményt (frmModify1). A Modify1 ablakban hagyományos Edit mezőket használjunk, ne pedig DBEdit-et.
A születési hely és idő megadásánál, az Edit mezőben használható karaktereket korlátozhatjuk, ha felhasználjuk az OnKeyPress eseményeket.


if Key  in [#8,#9,#13,#27,#71,#72,#75,#77,#79,#80,#83,'0'..'9'] then else
  Key:=#0;
A Form OnCreate eseményében állítsuk be az új felvitelnek megfelelő címet. Ha módosításról van szó, akkor az ablak megjelenítése előtt meghívjuk a SetModify metódust, ami módosítja a Form címét, valamint majd feltölti az Edit mezők tartalmát a megfelelő értékekkel (következő rész).
Amikor a Kiválaszt gombra kattintunk, megjelenítjük az adott beteg eddigi látogatásainak adatait. A DBGrid-be itt is csak a legfontosabb adatok kerülnek. Ebben az ablakban is lehetőséget biztosítunk új adat felvitelére, módosításra, valamint törlésre. Természetesen egy vissza gombra is szükségünk van. A módosítást és az új adat felvitelét itt is ugyanabban az ablakban fogjuk elvégezni, hasonlóan, mint azt az frmModify1-nél tettük.

Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 270. 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 |