home *** CD-ROM | disk | FTP | other *** search
- Vazeni uzivatelia,
-
- snazil som sa spravit nejake prve demo ukazky, ktore Vam, verim,
- na zaciatku trosku pomozu. Ako uvidite, az na "kozmenticky" syntax
- prikazov spocivajuci v pridani prefixu DC_ sa na Clipper-ovskom kode nic
- nezmenilo. Niekde bude samozrejme treba pridat nejake "textove objekty"
- navyse, pripadne troska upravit postupnost niektorych prikazov, ale princip
- programu zostane zachovany. Budem sa to snazit strucne okomentovat, aj ked
- si myslim, ze je to dost zrozumitelne - v pripade nejakych nejasnosti ma
- kontaktujte eMail-om, ale predtym si najskor dokladne pozrite dokumentaciu
- Xbase++ a eXpress++! Samozrejme nechcem nahradzat priklady z dokumentacie
- alebo z demo verzii prislusnych produktov, len su tu spracovane najcastejsie
- Vase otazky, plus nejake moje doterajsie skusenosti.
-
- - hned uvodom, ak len chcete mat 32-bit-ovu "textovu" verziu, teda 100% kopiu
- Vasej DOS-ovskej aplikacie, tak sa nemusite s nicim trapit
- - a len jednoducho si ju prekompilujte pomocou Xbase++
- - no a ak chcete mat plne GUI verziu, tak citajte dalej :-)
- - predtym ako zacnete studovat zdrojovy kod jednotlivych funkcii, vyskusajte
- si najskor vsetky volby z menu
- - v menu systeme som spravil az tri urovne menu(Evid.4)
- aj s jednou zakazanou polozkou-PragoSoft3
- - na rychly vyber najcastejsie pouzivanych Volieb si mozete spravit
- TOOLBAR - napr. osoby, presuny, provizie...
- - na plochu si mozete umiestnit hocijaky obrazok(-y)
- - menu polozky PragoSoft 1, 2 a 4 maju po dve varianty, aj pre ovladanie-
- aktivovanie bud "zvolenymi" klavesami alebo funkcnymi klavesami F2...
- samozrejme ich mozete aktivovat aj kliknutym mysi;
- vid spravene funkcie pre Vas na osetrovanie stlacenych klaves;
- takze mysi sa nemusite pocas celeho behu programu ani dotknut !
- - volby PS 1 a 2 su len take odlahcene priklady na rychle prehladne
- "zoznamenie sa" s problematikou a troska funkcnejsi priklad je v PS4,
- kde je aj pridanie, oprava a vymazanie polozky;
- rozmiestnenie jednotlivych poli GET si moc nevsimajte, je to velmi
- okliestnena verzia jednej obrazovky z nasho jedneho programu, ale
- je tu ukazana vacsina prikladov, s ktorymi sa stretnete ;
- tu si treba uvedomit jednu dolezitu vec, a to, ze vsetko su to objekty,
- preto napriklad ak v nejakej funkcii, ktoru volate, zmenite hodnotu
- nejakej polozky v hlavnou GetList-e, treba po jej navrate zavolat
- funkciu LOSTFOCUS-vid zrojak;
- takisto, nemozete priamo vypisovat hocikde a z hocikadial na obrazovku,
- nie ste MS-DOS-e, ale vzdy si musite najskor vytvorit prvotny objekt
- a potom jednoducho uz do neho "vpisujete" co len chcete-vid :setCaption(;
- - tu upozornim na funkcie pre VALID-aciu jednotlivych GET poli; a aj WHEN
- - takisto je tu ukazka aj Scope funkcii-vid GET PSC; skuste najskor
- vlozit 94911, potom 94901, potom 99999 a nakoniec 11111 a uvidite
- rozdiely
- - jednoducho sa treba len pohrat s niektorymi parametrami...
- - takisto tu mate spravene rychle ovladanie pri pridavani alebo oprave udajov
- na Zapis udajov(PGDN/ALT+Z) alebo Stornovanie zmien(ESC/ALT+S)
- s ToolTip napovedami
- - rychlo zistite, ze uzivatel sa nemusi pocas celeho behu programu mysi
- ani dotknut, takze sa neznizi ziadna produktivita prace, coho sa
- boji vacsina uzivatelov este DOS verzii !
- - dolezita poznamka: napriek tomu, ze mate moznost ihned po vstupe
- novych udajov v hociktorom GET poli stlacit PGDN alebo ALT+Z
- alebo kliknut na OK, DOPORUCUJEM Vam vzdy potvrdit vstup stlacenim
- klavesy ENTER, aby sa vykonali spravne vsetky VALID-acie a ostatne
- podmienky, aj ked to vacsinou pracuje bez problemov, ale istota
- je istota :-)
- - na presun medzi jednotlivymi GET polami mozete pouzit ENTER, TAB,
- SHIFT+TAB, stlacit priradenu kombinaciu HOT-Klaves(vid ACCELKEY xbeK_ALT_B
- pre GET KodBanky vo funkcii Oprav() v PS4() ) alebo priamo kliknut mysou
- do pozadovaneho GET pola(tu ale doporucujem vzdy kliknut na jeho
- zaciatok, nie niekde "v nom")
- - trosku iny sposob vytvorenia Browse objektu a PuschButton-ov je ukazany
- vo volbe Banky
- - TestUpdated()- ukazky testovania aktualizacie GET-ov, ci bola zmenena ich
- povodna hodnota alebo nie, a nasledny zapis udajov len pri ich zmene,
- aj ked bol ukonceny vstup ako OK;(inak povedane, naco sa zdrzovat
- zapisovanim udajov na disk-hlavne pri praci v sieti, ak neboli zmenene);
- na rozdiel od funkcie Updated() tato kontroluje nielen normalne GET-y,
- ale aj CheckBox-y, ComboBox-y a vsetky ostatne GET objekty;
- - vyzaduje pridat volbu SAVE do GETOPTIONS, DC_GetRefresh() a
- DC_GetOrigSet() do EVAL pre DCREAD, po ukonceni vstupu TestUpdated()
- a DC_GetDestroy() na konci - vid Pridaj/Oprav funkcie vo volbe Banky
- a PragoSoft4
- - ak citate/editujete priamo databazove polia, napr. MENO, OBEC v databaze
- OSOBY, tak bud na zaciatku procedury/funkcie ich treba deklarovat ako
- FIELD MENO, OBEC alebo este lepsie(doporucovane!) je pouzivat ich
- alias databazy, teda napr. OSOBY->MENO, OSOBY->OBEC
- - takisto aj vsade inde v programe pouzivajte spolu nazvami poli aj ich
- aliasy prislusnej databazy, a takisto aj dopurucujem kvoli "istote"
- vzdy nastavit prislusnu pracovnu databazu pomocou dbSelectArea()
- - pomocou Filtra v Browse-ri si mozete "obmedzit-filtrovat" zaznamy podla
- lubovolneho pola a lubovolnej podmienky
- - pomocou Hladaj v Browse-ri si v aktualnom stlpci od aktualnej pozicie/vety
- mozete postupne vyhladat vsetky zaznamy splnajuce Vasu podmienku
- - spravil som aj par ukazok na Progress Bar; ja osobne ich nepouzivam vobec,
- alebo len velmi malo, pretoze cas na ich vytvorenie/aktualizaciu/znicenie
- je niedeky/vacsinou dlhsi ako vlastne vykonanie prikazu;
- preto ja pouzivam Objekt TEXT, kde len menim jeho text, ktory v podstate
- vobec nezdrzuje a splni tu istu "informacnu" funkciu - vid priklad
- "Test Skip+Print - 1 RecNo() - info text" a
- "Test Progress varianta 2"
- - BROWSE objekt zabera dost pamate a systemovych prostriedkov a aj je trosku
- pomalsi, "doporucuje sa" vsade tam, kde nie je potrebna az taka
- "konfigurovatelnost" (napr. pri obycajnom prezerani DBF suborov a ich
- aktualizovani cez dalsie funkcie (napr.Pridaj/Oprav apod.), pouzivat
- QUICKBROWSE objekt, ktory splna tu istu informacnu funkciu, ale vzhladom
- na jeho interny navrch je super rychly a zabera minimum syst.zdrojov;
- ma vyznam pouzivat ho aj na rychlych PC a nielen na pomalych; inak
- povedane, naco sa zbytocne zdrziavat pomalym vykreslovanim nejakych
- nepodstatnych veci
- - najvacsi rozdiel medzi rychlostou prace a celkovou narocnostou ihned
- zbadate, ked budete prezerat DBF s nastavenou nejakou FILTER alebo SCOPE
- podmienkou, a to je dost casta situacia v realnych podmienkach
- u zakaznika, ked ho zaujima len nejaka podmnozina zaznamou
- - ak si pozriete priklady Obce A a Obce B, tak uvidite len minimalne
- rozdiely v ich strukture, ale obrovsky rozdiel v rychlosti prezerania
- a reakciach
- - tu si vsimnite funkcie konciace na _Q, riadky/funkcie obsahujuce
- odkazy na M->nRecnoDB a vyskyty funkcii
- dbSuspendNotifications() a dbResumeNotifications(); skuste si ich aj
- "zaremovat", aby sa nekompilovali a uvidite ich vyznam v pouzitych
- funkciach
- - skuste si nastavit Filter na rovnaku podmienku v oboch prikladoch
- (napr."TRA $ OBEC" pomocou Funkcie Filter) a potom len jednoducho
- prezerat DBF - rozdiel v rychlosti je velky aj na mojom Intel
- Pentium IV 1.5GHz, takze nie je to urcene len pre pomale PC
- - ako uvidite, skip-ovanie filtrovanej databazy, ked su zaznamy, ktore
- splnaju pozadovanu podmienku "fyzicky" dost od seba vzdialene, tak
- pri QuickBrowse objekte to vobec "necitite" na rozdiel od Browse
- objektu; tu vyrazne rozhoduje aj to, ako mate nastavene Syst.par.
- v Servise pre Browse objekty, ci na "A" alebo "N" !
- - skuste si v Servis-Parametre nastavit najskor posledne styri nastavenia
- pre Browse na A(ano) a potom druhykrat na N(nie) a len jednoducho
- prezerajte-prechadzajte databazu hore-dole. Najlepsie uvidite rozdiel,
- ked skocite na koniec databazy(CTRL+PGDN):
- a) a len stlacte klavesu-sipku "posun hore" a drzte ju,
- b) alebo stlacte klavesu PGUP "skok o stranku hore" a drzte ju;
- - rozdiely v oboch pripadoch(Browse/QuickBrowse) v rychlosti posunu
- a aj v prekreslovani su obrovske, vyskusajte si to aj s "A" aj "N"
- volbou v parametroch pre BROWSE a aj QUICKBROWSE objekt
- - takisto je "trochu" citit rozdiel, ak je databaza otvorena
- Vyhradne-Exclusive alebo Zdielane-Shared
- - udaje zo suboru ParamSys.INI su "zdielane" aj nasimi DOS-ovskymi verziami
- programov; tu doporucujem zvazit nastavenia pre posledne parametre
- pre Browse/QuickBrowse objekty na "A"(Ano) vs. "N"(Nie)-nastavenie na "A"
- je sice efektne, ale "troska" zdrzuje obcas posuny po velkych databazach;
- Naopak, "N" vyrazne zrychly presuny po databazach a prekreslovanie objektu
- Browse a aj QuickBrowse; niekedy je samozrejme "ziaduce-pozadovane"
- zobrazovat priebezne aktualne cislo vety, pocet zaznamov splnajucich
- podmienku a akt.stav PushButtonov
- - dobry "kompromis" je QuickBrowse s "A"
- - spravene su aj funckie na Nahlad pred tlacou a vlastnu tlac TXT suborov
- s moznostou vyhladavania "hladaneho" textu priamo vo vytvorenej zostave
- - pomocou funkcie Demo() si mozete "vyrobit" demo verziu a hlasky
- v urcitych casovych intervaloch a bud nechat na uzivatela, aby ukoncil
- program "dobrovolne" alebo po uplynuti zadaneho casu jednoducho
- "skoncit"- quit...
- - pripojil som aj zopar uzitocnych funkcii vyuzivajucich priamo systemove
- DLL, ako zistenie serioveho cisla disku, velkost dostupnych systemovych
- zdrojov, priame vyvolanie posty(eMail) apod.
- - ak nemate rsrc16.dll/rsrc32.dll, tak si ich nainstalujte cez volbu
- Pridat-Ubrat programy/Instalacia Windows/Systemove nastroje/Merac
- systemovych prostriedkov
- - pripojil som aj funkcie, ktore som si vyrobil na spakovanie/rozbalenie
- a zalohovanie/obnovenie suborov na disk/disketu; vyznam jednotlivych
- parametrov WinRar(min.ver.2.9) si pozrite v jeho dokumentacii;
- Princip je jednoduchy: vytvori sa adresar Zaloha a podadresare Mesiac01-12
- a AktualnyDen. Pri kazdom starte/ukonceni programu sa vytvori/zaktualizuje
- archiv v prislusnom podadresari podla aktualneho dna v mesiaci(ak este
- neexistuje, tak sa najskor vytvori) a potom sa spravi aj kopia do adresara
- Aktualny den ako podadresar Hodina/Minuta. Tymto mam zarucene to, ze ak
- z nejakeho dovodu sa porusi nejaka databaza/zisti sa nejaky problem,
- tak sa v ten den viem vratit k stavu, kedy to este bolo v poriadku
- (preto mam nastavene, ze automaticky sa zalohuje kazde XX hodin-vid funkcie
- Test_Zal() a PM() ), alebo, ked to zistim o den, dva, resp, neskor, viem sa
- vratit k stavu k urcitemu dnu, kedy to bolo este ok. Zaroven sa kontroluje,
- ci nahodov nie je "novy den", ak ano, tak sa cely obsah adresara
- AktualnyDen vymaze, aby sa to tam nepoplietlo-nehromadilo.
- Sumarum: vzdy mam poslednu zalohu z kazdeho dna plus priebezne zalohy
- aktualneho dna.
- - na SAY doporucujem pouzivat font "Arial CE" a na GET "Courier New CE";
- font "Times New Roman CE" nie je moc vhodny na SAY, nie je tak citatelny
- - po spusteni volby Benchmark uvidite, preco sa "doporucuje" pouzivat kvoli
- celkovej rychlosti behu programu hlavne Local/Static premenne; samozrejme
- je niekedy takze alebo nemozne uplne Private/Public prestat pouzivat,
- lebo ich vidiet "skoro vsade" bez nutnosti ich posielat ako parametre
- - takisto sa odporuca programy spustat na Windows2000 alebo WinXP,
- pretoze len to su skutocne 32-bit-ove systemy, Win9x maju plno stareho
- kodu a je to citit(ale da sa to prezit); na Win2000/XP to chodi jedna
- radost; vid web podstranku Testy
- - pri praci so sietovymi verziami Vasich aplikacii Vam velmi moc doporucujem
- kvoli "velkosti" EXE suborov a DLL kniznic mat ich nahrate na kazdom
- jednom lokalnom pocitaci a spustat program z neho a nie mat len umiestneny
- jeden EXE subor s DLL kniznicami na sietovom disku a spustat to zo servera;
- rozdiel "v rychlosti" uvidite sami :-)
- - na serveri majte ulozene len databazy
-
-
- Vytvorenie projektu a kompilacia:
-
- napriek tomu, ze je to dost podrobne a nazorne popisane a ukazane aj
- v dokumentacii Xbase++ a aj eXpress++, tak Vas na nu v prvom rade odkazujem,
- ale aj prikladam strucne ukazky a postupy, ako to robim ja:
- princip je rovnaky ako v Clipper-i, len rozdielne su programy, ktore
- kompiluju(XPP vs CLIPPER) a linkuju(PBUILD vs RMAKE) vytvorene XPJ subory,
- tzv.projekty(v Clipper-i to boli RMK/LNK subory)
- -Xbase: aby som nemusel stale pisat postupnost tych istych prikazov, ked
- idem vytvarat novy projekt, tak som si vyrobil BAT subor, kde to
- mam z automatizovanem, a uz len napisem "xpj cHlavnyPRG", kde miesto
- cHlavnyPRG dam nazov hlavneho PRG suboru, teda napr. "xpj test";
- no a potom neskor, ked spravim nejake zmeny v zdrojakoch, uz len
- spustam _mybuild.bat na prekompilovanie zmien a vygenerovanie noveho
- EXE s tym, ze ak by tam bol nejaky problem, tak chybove hlasky su
- presmerovane do suboru _errost.txt
- - subor XPJ.BAT a GUI.EXE si nahrajte do adresara, na ktory mate
- nastavenu cestu-PATH, aby ste ho spustit z lubovolneho adresara
- -Xbase+eXpress: tu si len vzdy skopirujete nejaky Vas subor projektu a do
- casti pre PRG subory si napiste vsetky subory, ktore sa maju linkovat
- -ak si chcete pridat priamo do EXE programu nejake dalsie ikony,
- bitmapy apod, napr.MOJELOGO.BMP, tak ho treba
- -nakopirovat do adresara \exp17\bitmaps,
- -pridat-zadefinovat do \include\dcbitmap.ch novu hodnotu pre neho,
- napr. #define BITMAP_MOJELOGO 9999
- -pridat-zadefinovat do \lib\express.arc
- BITMAP_MOJELOGO = "..\BITMAPS\mojelogo.bmp"
- -prekompilovat zmeny suborov prikazom "arc express"
- -prekomplilovat dclipx.xpj v adresari \source\dclipx a nakopirovat
- nove dclipx.* do \lib
- -tu mozete vyuzit moj _cl.bat subor, ktory treba vzdy spustit aj
- po naistalovani kazdej novej verzie eXpress-u
-
-
- Ak sa Vam zle zobrazuju narodne znaky, tak si:
- a) bud si v projekte nastavte GUI = no (plati pre textovy rezim), alebo
- b) si upravte v appsys.prg standardny font "Alaska Crt" na
- "Courier New CE" a prilinkujte si ho k aplikacii(plati pre text/GUI
- rezim), alebo
- c) pouzite pre jednotlive objekty fonty Arial CE, Courier New CE alebo
- Times New Roman CE - plati pre plne graficky rezim GUI
-
- vid priklady v podadresari CLIP_XBA; neviem, ci to funguje-neskusal som
- to s kodovou strankou Kamenickych, ale ak mate udaje/texty v Latin2,
- tak je to bez problemov; pripadne si to prekonvertujte z kodu
- Kamenickych do Latin2, pretoze ramceky v plne grafickom rezime aj tak
- nebudete potrebovat
-
- - zmeny v jednotlivych verziach citajte v subore _verzie.txt, vyhradzujem
- si pravo robit zmeny kodu a funkcnosti bez upozornenia !
-
- Dufam, ze Vam tieto moje skusenosti, rady a vysledky z doterajsej
- prace pomozu a budem vdacny za spatny ohlas a kontaktovanie v pripade
- hocijakych nejasnosti.
-
-
- - pripojeny subor praha.exe treba nahrat do hlavneho adresara na disku C:
- a len spustit
- - vytvori sa podadresar praha so vsetkymi potrebnymi subormi
- - spustite _mybuild.bat na vytvorenie exe suboru
- - pre spravne zobrazovanie "narodnych" textov je potrebne prekompilovat
- kazdu novo-nainstalovanu verziu eXpress-u - na to vam posluzi subor
- _cl.bat. Tento prekopirujte do adresara c:\exp17\source\dclipx
- a len ho spustite, pripadne si ho upravte podla potreby - neplati pre
- demo verziu na nasej stranke, ta uz je upravena
- - nezabudnite mat nastavene cesty v autoexec.bat:
- SET ALINK=/PM:PM
- SET XPPRESOURCE=C:\ALASKA\XPPW32\RESOURCE
- SET PATH=%PATH%;C:\EXP17\LIB;C:\ALASKA\XPPW32\BIN;C:\ALASKA\XPPW32\LIB
- SET LIB=C:\EXP17\LIB;C:\ALASKA\XPPW32\LIB
- SET INCLUDE=C:\EXP17\INCLUDE;C:\ALASKA\XPPW32\INCLUDE
-
- ak mate aj eXpress++ 2.0, tak cesty k nemu treba napisat pred
- eXpress17++ a Xbase++, teda:
- SET ALINK=/PM:PM
- SET XPPRESOURCE=C:\ALASKA\XPPW32\RESOURCE
- SET PATH=%PATH%;C:\EXP20\LIB;C:\EXP17\LIB;C:\ALASKA\XPPW32\BIN;C:\ALASKA\XPPW32\LIB
- SET LIB=C:\EXP20\LIB;C:\EXP17\LIB;C:\ALASKA\XPPW32\LIB
- SET INCLUDE=C:\EXP20\INCLUDE;C:\EXP17\INCLUDE;C:\ALASKA\XPPW32\INCLUDE
-
-
- Dolezita poznamka: aby vsetky demo ukazky pracovali spravne, je potrebne
- mat stiahnute eXpress++ 1.7, min. verziu 208 (vid \exp17\readme.txt) demo
- z nasej www stranky, + Xbase++ 1.7 demo a PFL1 a aj PFL1b
-
- Vela uspechov v programovani Vam zela
-
- Zdeno Bielik - ACE System
-
- Vas Autorizovany obchodny partner pre Cesku a Slovensku republiku
-
- http://www.xbase.sk
-