Sada komponentov Eval slúži na vylepšenie práce v databázových aplikáciách písaných v
Delphi. Tieto komponenty majú uľahčiť, resp. umožniť nasledujúce skutočnosti :
Problémy :
Filtre v komponente TDataSet. Štandardné filtre
Delphi majú niekoľko nevýhod:
veľmi slabá množinu podporovaných funkcií
práca s nimi je pri veľkých databázach pomalá
nemajú žiadne užívateľské rozhranie
Vypočítané polia(calculated fields) sa ťažko
používajú, pokiaľ neviete dopredu vzorec pre ich
výpočet. Niekedy nastáva situácia, ža tento vzorec
prográtor nepozná, ten je známy až pri
prevádzke, resp. môže sa aj meniť. Navyše práca s
mnohými vypočítanými poľami Delphi program veľmi
spomaľuje, pretože tieto polia sa počítajú
relatívne často.
Delphi neobsahuje žiadny užívateľský editor
výrazov a filtrov, ako má napr. Excel.
Riešenia:
Nami ponúkaná sada komponentov EVAL rieši z veľkej časti tieto drobné
nedostatky Delphi. Základom je komponent TEval,
ktorý slúži na run-time vyhodnocovanie výrazov zadaných v
stringovej premennej. Tento komponent obsahuje výkonné jadro,
ktoré string po jeho zadaní raz analyzuje (zistí prípadné
syntaktické chyby) a potom ho opakovane vyhodnocuje. Podporuje
pritom prevažnú časť štandardných funkcií Delphi a navyše
má niekoľko veľmi silných funkcií, ktoré sú zabudované
priamo v komponente TEval.
Filtrovanie tabuliek je možné riešiť dvoma spôsobmi:
Rozšíriť množinu funkcií pomocou
komponentu TEval spolu s použitím udalosti
OnFilterRecord pre TDataSet. Takto môžeme
vytvárať veľmi všestranné filtre, bez
obmedzenia na množinu funkcií, dokonca aj s
užívateľským editorom podmienok.
Farebne odlíšiť tie riadky tabuľky,
ktoré vyhovujú filtru. Napr. v DBGride
použijeme udalosť OnCellParams na vyhodnotenie
podmienky cez TEval, a ak podmienka=true, dáme
BackgroundColor=clYellow. Vidíme tu síce
všetky riadky tabuľky, ale máme zvýraznené
to, čo by sme videli pri použití bodu 1.
Navyše sme získali na rýchlosti, pretože sa
nevyhodnocuje celá množina, ale vždy len to,
čo je vidieť na obrazovke. Použitím
komponentu TEvalDBNavigator
môžeme zabezpečiť posun len po tých
riadkoch, ktoré vyhovujú podmienke.
Vypočítané polia môžeme definovať priamo počas behu
programu, resp. aj pridávať nové polia. Prepojením
udalosti OnGetText pre TField a
komponentu TEval môžeme zabezpečiť zobrazovanie
výsledku. Pri použití knižnice EVAL sa počíta
premenná iba vtedy, keď je potrebná jej hodnota.
Na editáciu výrazov a filtrov slúži komponent TEvalPanel,
ktorý dovoľuje užívateľovi vyberať si z množiny
funkcií a ich parametrov a tak zostaviť výraz alebo
filter. Počas zadávania môže koncový užívateľ kontrolovať výsledok
priamo v tomto paneli. Pre zábudlivých alebo
pohodlných obsahuje tiež History combo box, kde si
môžete vybrať zo starších podmienok a filtrov, resp.
ukladať nové výrazy a filtre.
Balík komponentov EVal obsahuje tiež komponenty, pomocou
ktorých môžete zostaviť vlastné užívateľské
rozhranie tak, aby spĺňalo Vaše predstavy.
Knižnica EVAL rozširuje Delphi o množstvo funkcií, ktoré sú
pre užívateľa potrebné, napr. porovnávanie textu s
chybami, test reťazcov podľa zvukovej zhody, operácie
s dátumami, prevod meny na text a pod.
Poskytuje funkcie, ktoré bežne Delphi nepozná, napr. určitý
integrál.
Ak zakúpite verziu so zdrojovým kódom, môžete veľmi
ľahko pridávať vlastné funkcie.
Nevýhody komponentov EVAL:
Keďže ide o vyhodnocovanie výrazu,
ktorý je definovaný až za behu programu, trvá jeho
vyhodnotenie dlhšie ako kompilovaný kód. Podľa merania, ktoré je
zabudované v demo programe ku knižnici EVAL je priamy
kompilovaný kód asi 8x rýchlejší ako vyhodnotenie knižnicou
EVAL.