; vzorová DDT sestava z deníku - graf obratů na účtu nebo skupině účtů ; verze z 02.2001 ; Autor: WinDUO Team Name('Graf obratů') ; pod tímto názvem bude sestava v menu FileName('Graf1.WNS') ; pod tímto názvem bude sestava uložena na disku Designed('DenMan') ; sestava bude dostupná z okna Adrman Author('Winduo Team','EMail: winduo@winduo.cz','http://www.winduo.com','http://www.winduo.cz') ;informace o autorovi Descr('Nakreslí graf obratů na účtu') ;popis sestavy, tento text bude v bublince ;deklarace promenných SledUcetS:String[3] SledUcetA:String[3] TypSled:String[7] ValidUcet:String='0123456789?' ValidDatum:String='0123456789.,' OdData:Word=0 DoData:Word=0 Veta:LongInt ; definuje proměnnou DeclareRec('Denik') ; přiřadí a definuje větu z adresáře DeclareRec('KeyDenik5') ; přiřazení a definice třídícího klíče ClearKey(KeyDenik5) ; resetuje ukazatel aktuální věry v souboru DeclareRec('KeyDenik4') ; přiřazení a definice třídícího klíče ClearKey(KeyDenik4) ; resetuje ukazatel aktuální věry v souboru ;definice dialogu pro zadání účtu DlgFollowMouse(True) ;{definice uvodniho dialogu} DefDialog('Graf účtu',462,224) DlgShade(-1,'',4,27,453,124) DlgStatic(-1,' Volba údajů',3,5,84) ; zadání účtu DlgStatic(-1,'Zadej účet, který chceš sledovat:',10,36,220) DlgEdit(101,SledUcetS,230,31,30,,3,,ValidUcet) DlgOnLineHelp(101,'Syntetický účet, který chcete sledovat') DlgEdit(102,SledUcetA,270,31,30,,3,,ValidUcet) DlgOnLineHelp(102,'Analytický účet, který chcete sledovat') ;zadani cas.intervalu DlgStatic(-1,'Zadej interval od data:',10,62,155) DlgEditDate(103,OdData,168,57,,,,ValidDatum) DlgOnLineHelp(103,'Analýza bude provedena za časový interval') DlgStatic(-1,'do data:',268,62,55) DlgEditDate(104,DoData,331,57,,,,ValidDatum) DlgOnLineHelp(104,'Analýza bude provedena za časový interval') ;zadani typu vypoctu DlgStatic(-1,'&Podrobnost sledování:',10,84,155) DlgCombo(105,TypSled,168,82,83,128,7,CBS_DropDownList,'měsíční','týdenní','denní') DlgOnLineHelp(105,'V jaké podrobnosti chcete graf zobrazit') ;dodelat dotaz na sledovani po mesicich, tydnech, dnech DlgButton(id_OK,'OK',290-124,156); DlgOnLineHelp(id_OK,'Pokračuje ve zpracování') DlgButton(id_Cancel,'Zpět',373,156); DlgOnLineHelp(id_Cancel,'Ukončí bez zpracování') if(DlgExecute()<>ID_OK) Halt if(DoData=0) DoData=65535 ;do tabulky načte vektor hodnot ; vyhodnotit otazniky ; definovat tabulky PocetUdaju:Integer debug if(TypSled=0) PocetUdaju=12 if(TypSled=1) PocetUdaju=53 if(TypSled=2) ;zjistit zda je prestupny PocetUdaju=366 if((OdData<>0)and(DoData<>0)and(TypSled=0)) ; mesicni omezeno begin PocetUdaju=12-vypocist end if((OdData<>0)and(DoData<>0)and(TypSled=1)) ; tydenni omezeno begin PocetUdaju=53-vypocist end if((OdData<>0)and(DoData<>0)and(TypSled=2)) ; denni omezeno begin PocetUdaju=366-vypocist end XOsa:Array[1..PocetUdaju] of Integer Seznam:Array[1..PocetUdaju] of Real ClearKey(KeyDenik5) x=NextKey(KeyDenik5,Veta) ; volání procedury pro vykreslení grafu TabPos=10 ; první řádek na stránce se bude tisknout 10mm shora DefDynTab(10,180,5,4,8,TA_RIGHT,25,TA_LEFT,2,TA_LEFT,2,TA_LEFT) ; definice, jak bude tabulka vypadat ;hlavička Text(190,TabPos,TA_Right,StrDate(GetDate())) ; tisk hlavičky Text(100,TabPos,TA_Center,'Vzorová sestava') ; tisk hlavičky if(IsFilter(Adresar)) ; dotaz, zda je aktivní filtr do sestav begin ; začátek příkazů, které budou provedeny, když je filtr aktivní DynTab('Aktivní filtr') ; tisk informace o filtru do hlavičky, DynTab zároveň posune na další řádek o hodnotu Odstup, která je definována v DefDynTab end ; konec příkazů, které je provedou, když je aktivní filtr else ; za ELSE je příkaz, který bude proveden, když není aktivní filtr Inc(TabPos,Odstup) ; posun na další řádek, zdvihne hodnotu TabPos o Odstup DynTab('IČO'+#9+'Název'+#9+'Kód 1'+#9+'Kód 2') ; tisk hlavičky, #9 je tabelátor Line(30,TabPos+Odstup/2,160,0) ; podtrhnuti o půl řádku Inc(TabPos,Odstup) ; vytiskne volný řádek - posune souřadnice Radek=Radek+3 ; počítá vytištěné řádky kvůli stránkování While(NextKey(KeyAdresar2,Veta)) ; začátek cyklu přes celý soubor begin ; začátek příkazu pro zpracování jedné věty ReadRec(Adresar,Veta) ; přečte větu ze souboru if(InFilter(Adresar)) ; dotaz, zda věta prošla filtrem begin ; začátek příkazu pro operace s těmi, které prošly filtrem Inc(Radek) ; zvýší hodnotu počtu vytištěných řádků o 1 if(Radek>PocetRadku) ; podmínka pro stránkování begin ; začátek vloženého příkazu pro stránkování NextPage ; zastránkování Radek=0 ; vynulování počítadla řádků TabPos=10 ; první řádek na stránce se bude tisknout 10mm shora ;hlavička Text(190,TabPos,TA_Right,StrDate(GetDate())) ; tisk hlavičky Text(100,TabPos,TA_Center,'Vzorová sestava') ; tisk hlavičky if(IsFilter(Adresar)) ; dotaz, zda je aktivní filtr do sestav begin DynTab('Aktivní filtr') ; tisk hlavičky end else Inc(TabPos,Odstup) ; posun na další řádek DynTab('IČO'+#9+'Název'+#9+'Kód 1'+#9+'Kód 2') ; tisk hlavičky, #9 je tabelátor Line(30,TabPos+Odstup/2,160,0) ; podtrhnuti Inc(TabPos,Odstup) ; vytiskne volný řádek - posune souřadnice Radek=Radek+3 ; počítá vytištěné řádky kvůli stránkování end ; konec vloženého příkazu pro stránkování DynTab(Null(STR(Adresar.ICO),8)+#9+Adresar.Nazev+#9+Adresar.Kod[1]+#9+Adresar.Kod[2]) ; vytiskne údaje z věty z adresáře, do IČO doplní levostranné nuly end ; konec příkazu pro věty, které prošly filtrem end ; konec příkazu pro zpracování jedné věty END ; konec programu