Delphi - Multi-tier alkalmazásfejlesztés MIDAS komponensekkel

Multi-tier 8. rész

forráskód letöltése
Jelen cikkben a TClientDataSet néhány további metódusait vizsgáljuk.
Mellékelt példaprogramhoz a múlt héten közzé tett MIDAS cikkhez készített szerver alkalmazást használjuk. - SetRangeStart, SetRangeEnd, ApplyRange
Ezek a metódusok egy tartomány kezdetének és végének kijelölésére, valamint aktivizálására szolgálnak egy kliens adathalmazban. Ilyenkor az adathalmaznak csak azon rekordjai látszanak, amelyeket a tartomány kijelölésekor megadtunk.
Példánkban a tartományt a NEV mező alapján jelöljük ki. Ehhez a példaprogram Form-jának aktivizálásakor (TfrmFoform.FormActivate) az előző példában megismert módon egy új indexet készítünk a cdsSzemelyek adathalmaz részére az AddIndex metódus segítségével, majd az IndexName property-t beállítjuk az újonnan készített indexre.
A Form-on találunk két TBevel komponenst (csak a Form optikai tagolására szolgálnak), amelyek közül az elsőbe két TEdit és egy TButton komponenst helyeztünk. Ezek a komponensek a tartomány kijelölésére szolgálnak, a másik TBevel-be helyezett két TEdit és két TButton segítségével pedig a már előzőleg kijelölt tartomány kezdetét vagy végét módosíthatjuk.

Nézzük a tartomány (range) kijelölését! Az adataink a cdsSzemelyek kliens adathalmazban a NEV mező szerinti rendezettségben jelennek meg, mint azt már előbb láttuk. A "Névtartomány kezdete" címkével jelzett mezőbe beírjuk azt a nevet, vagy kezdő karaktereit, amellyel a tartomány kezdődjön, a "Névtartomány vége" címkéjű mezőbe pedig ugyanígy a tartomány végét képező nevet, vagy annak kezdő karaktereit. Ezután megnyomjuk a "Rendben" feliratú gombot. Ekkor a cdsSzemelyek adathalmaznak csak az általunk kijelölt tartományba eső rekordjai fognak megjelenni a rácsban. Nézzük mi is történik ilyenkor. A Button1 (TButton) gomb OnClick eseménykezelőjébe (TfrmFoform.Button1Click) a következő kódot írtuk:
  with cdsSzemelyek do
  begin
    SetRangeStart;
    FieldByName('NEV').AsString := Edit1.Text;
    SetRangeEnd;
    FieldByName('NEV').AsString := Edit2.Text;
    ApplyRange; 
  end;

A SetRangeStart metódus jelzi a kódban a tartomány (range) kijelölésének kezdetét. A következő sorban a NEV mezőnek értéket adunk, mégpedig az Edit1 (TEdit) mező értékét. Ezután a SetRangeEnd metódussal hasonló módon jelöljük ki a tartomány végét, amelyet az Edit2-be írtunk be. Az ApplyRange metódus alkalmazza (érvényesíti) az előző beállításokat, és ettől kezdve a kliens adathalmaznak csak a tartománybeállításnak megfelelő rekordjai érhetők el a kliensalkalmazás számára.

A már beállított tartomány kezdetének és végének szerkesztésére szolgál a másik TBevel-lel csoportosított két TEdit és TButton. Az eljárás hasonló az előzőekben leírtakhoz, de itt már külön-külön változtathatjuk meg a tartomány kezdetét és végét. Itt a két TButton (Button2 és Button3) OnClick eseménykezelőjébe írt kódokban a SetRangeStart helyett az EditRangeStart, a SetRangeEnd helyett pedig az EditRangeEnd metódusokat használtuk.
Itt meg kell jegyeznünk, hogy a SetRangeEnd és az EditRangeEnd metódusokkal megadott tartomány végében szereplő szövegmintának megfelelő rekord már nem tartozik a megjelenített rekordok közé, tehát az adathalmaz adatai között nem jelenik meg!

A Form alján található még egy TButton komponens, "Tartománykijelölések megszüntetése" felirattal. Ennek OnClick eseménykezelőjébe a következő kód került:
cdsSzemelyek.CancelRange;
Ez megszünteti a kijelölt tartomány érvényességét, vagyis megnyomása után minden rekord újra látható lesz.



Multi-tier cikksorozat