; vzorová DDT sestava z adresáře - vypíše firmy se zadanym kodem ; verze z 24.3.2001 ; Autor: WinDUO Team Name('Výpis licencí') ; pod tímto názvem bude sestava v menu FileName('AOC.WNS') ; pod tímto názvem bude sestava uložena na disku Designed('Adrman') ; 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('Vypíše ty co mají zadanou licenci a nemají vyšší','Změna třídění - Ne','Filtr - Ne') TabPos=10 ; první řádek na stránce se bude tisknout 10mm shora DefDynTab(10,180,4,5,3,TA_LEFT,8,TA_LEFT,25,TA_LEFT,8,TA_LEFT,10,TA_LEFT) ; definice, jak bude tabulka vypadat Veta:LongInt ; definuje proměnnou VetaA:LongInt ; definuje proměnnou v adresari Strana:Word ; definuje číslo stránky Radek:Word ; promměnná pro počítání vytištěných řádků PocetRadku:Word ; promměnná pro počet řádků na stránku PorCis:Word=0 ; promměnná pro počet řádků na stránku LocX:LongInt X:Boolean NazevFirmy:String[25] SledVerze:String[6] Pozice:LongInt ; definuje proměnnou DlgFollowMouse(True) ;{definice uvodniho dialogu} DefDialog('Výpis licencí',462,224) DlgShade(-1,'',4,27,453,124) DlgStatic(-1,' Volba údajů',3,5,84) DlgStatic(-1,'Zadej verzi:',10,59,208) DlgEdit(120,SledVerze,225,51,130,,80) DlgOnLineHelp(120,'Např. 1.47.A') DlgButton(id_OK,'OK',414-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 Strana=0 ; úvodní hodnoty = aktuální číslo strany PocetRadku=50 ; kolik řádků na stranu chcete tisknout včetně hlavičky DeclareRec('AOC') ; přiřadí a definuje větu z adresáře DeclareRec('KeyAOC1') ; přiřazení a definice třídícího klíče ClearKey(KeyAOC1) ; resetuje ukazatel aktuální věry v souboru DeclareRec('Adresar') DeclareRec('KeyAdresar1') InitStatus(UsedKeys(KeyAOC1)) ; inicializace stavoveho prouzku ;hlavička Text(0,TabPos,TA_Right,StrDate(GetDate())) ; tisk hlavičky Text(100,TabPos,TA_Center,'Výpis verze') ; tisk hlavičky Inc(TabPos,Odstup) ; posun na další řádek, zdvihne hodnotu TabPos o Odstup DynTab(#9+'IČO'+#9+'Firma'+#9+'Lic. číslo'+#9+'Verze') ; tisk hlavičky, #9 je tabelátor Line(10,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(KeyAOC1,Veta)) ; začátek cyklu přes celý soubor begin ; začátek příkazu pro zpracování jedné věty ReadRec(AOC,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 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,'Verze 1.47.A') ; tisk hlavičky Inc(TabPos,Odstup) ; posun na další řádek DynTab(#9+'IČO'+#9+'Firma'+#9+'Lic. číslo'+#9+'Verze') ; 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í ;proc nejede cela podminka, jen prvni cast ;nebo jak udelat porovnani jen prvnich 6 znaku? ;jak je to tříděné??? opravit asi ve STRUCT.DEF IF((CompareStr(RTRIM(AOC.Verze),'1.47.A'))or(CompareStr(RTRIM(AOC.Verze),'1.47.Asíť'))) begin ;skocit na dalsi LocX=AOC.Liccis x=NextKey(KeyAOC1,Veta) ReadRec(AOC,Veta) ; přečte větu ze souboru IF(CompareStr(AOC.Liccis,LocX)) begin ;kdyz je stejne liccis, netisknu end else begin ;kdyz je jine liccis, skocit zpet a vytisknout x=PrevKey(KeyAOC1,Veta) ReadRec(AOC,Veta) ; přečte větu ze souboru ; nalezení návu firmy KeyAdresar1.Length=4 KeyAdresar1.Ico=SwapL(AOC.Ico) if(FindKey(KeyAdresar1,VetaA)) begin ReadRec(Adresar,VetaA) NazevFirmy=Adresar.Nazev end else begin ClearRec(Adresar) NazevFirmy='' end ; konec názvu firmy PorCis=PorCis+1 DynTab(STR(PorCis,2,0)+#9+Null(STR(AOC.ICO),8)+#9+NazevFirmy+#9+AOC.Liccis+#9+AOC.Verze) Inc(Radek) ; zvýší hodnotu počtu vytištěných řádků o 1 end end ; IF(CompareStr(RTRIM(AOC.Verze),'1.47.Asíť')) ; begin ; DynTab(Null(STR(AOC.ICO),8)+#9+AOC.Liccis+#9+AOC.Verze) ; Inc(Radek) ; zvýší hodnotu počtu vytištěných řádků o 1 ; end end ; konec příkazu pro věty, které prošly filtrem Inc(Pozice) ; zvyseni citace zpracovanych vet SetStatus(Pozice) ; nastaveni stavoveho prouzku end ; konec příkazu pro zpracování jedné věty END ; konec programu