home *** CD-ROM | disk | FTP | other *** search
/ PC World 2002 June / PCWorld_2002-06_cd.bin / Software / Komercni / xbase / study / help.txt next >
Text File  |  2002-05-14  |  17KB  |  285 lines

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