HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Adatbevitel szabályozása DBGrid-en keresztül


Példaprogram letöltése

8614 bájt

Képzeljük el, hogy van egy olyan dialógus ablakunk, amiben van egy DBGrid, és egy OK gomb. A felhasználó tetszés szerint módosíthatja a DBGrid-ben az adatokat. Amikor az OK gombra kattint, a program leellenőrzi a beírt adatokat, és ha hibát talál, akkor a hibás adatot tartalmazó mezőre kerül a fókusz.
A mellékelt példában egy olyan DBGrid-et helyeztünk el az ablakban, amiben neveket és életkorokat lehet megadni. Ha az életkor nem esik 6 és 14 év közé, akkor a hibás adatot kijavíttatjuk a felhasználóval.

Az ellenőrzést a Button1 OnClick eseménynél végezzük el.
procedure TForm1.Button1Click(Sender: TObject);
var h: THandle;
    kor:integer;
    hiba:boolean;
begin
Végighaladunk egyenként a rekordokon, és ellenőrizzük, hogy a KOR mezőbe beírt száma a 6-14 intervallumba esik-e. Ha találtunk egy olyan rekordot, amiben hiba van, akkor a hiba változó értékét true-ra változtatjuk, és befejezzük a keresést.
    table1.first;
    hiba:=false;
    while (not table1.EOF) and (not hiba) do
    begin
      kor:=table1.FieldByName('ELETKOR').AsInteger;
      if (kor<6) or (kor>14) then hiba:=true else Table1.Next;
    end;
Ha hiba változó értéke true, akkor egy hibaüzenetben jelezzük azt, majd a DBGrid-nek átadjuk a fókuszt. A Windows GetFocus függvényével elkérjük a mező leíróját, és a SendMessage függvény segítségével küldünk egy EM_SETSEL üzenetet, amivel kijelöljük a mező tartalmát. A SendMessage függvény harmadik és negyedik paramétere ebben az esetben a kijelölés első és utolsó karaktere.
    if hiba then
    begin 
      MessageBox(Handle,
        'Az életkornak 6 és 14 év közé kell esni! Kérem javítsa ki!',
        'Hiba!',
        MB_OK+MB_ICONSTOP);
      Application.ProcessMessages;
      DBGrid1.SetFocus;
      DBGrid1.SelectedField:=DBGrid1.Fields[2];
      DBGrid1.EditorMode:=true;
      Application.ProcessMessages;
      h:=Windows.GetFocus;
      SendMessage(h, EM_SETSEL, 0, Length(DBGrid1.Fields[2].AsString));
    end else Close;
end;



Cikksorozat

#IDKategóriaCikk címeSorozat
3333WindowsNet Shell parancsok1. rész
3367WindowsNet Shell parancsok2. rész
3396WindowsNet Shell parancsok3. rész


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