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;