∴   Overlay-ek mozgatása nyomtatáskor

             Ahol a történet véget ér..., oda teszünk aláírást

2014.04.26. 21:02

Pár napja írtam az overlay-ekről. Akkor azt ígértem, megmutatom hogyan lehet ezeket adott pontba helyezni nyomtatáskor. Nos, nézzük is, hogy mondjuk egy aláírást hogyan lehet a megfelelő helyre mozgatni. Ehhez természetesen az kell, hogy a pozícióját futás időben tudjuk megadni, ne pedig fix értékkel a printerfájlban. Beállíthatóságához szükségünk lesz két változóra, amit a printerfájlban veszünk fel, ott deklarálunk.

.....AAN01N02N03T.Name++++++RLen++TDpBLinPosFunctions++++++++++++++++++

A               R WRALAIRAS                                          
A                                           OVERLAY(ALAIRAS &XD1 &YD1)

A                 XD1            5S 3P
A                 YD1            5S 3P

illetve ha egy változót (pl. megnevezés) is mozgatunk, akkor annál az alábbiak szerint kell a beállításokat megejteni:

A               R WRDETAIL                                          

A                 DTERMEKKOD    10          TEXT('TERMÉKKÓD')
A                                           POSITION(&XD2 &YD1) 

A                 DMEGNEVEZ     30          TEXT('MEGNEVEZÉS')
A                                           POSITION(&XD2 &YD2) 

A                 XD2            5S 3P

A                 YD1            5S 3P
A                 YD2            5S 3P

A programban pedig értéket adunk a változóknak, majd kiíratjuk a rekordot:

CL0N01Factor1+++++++Opcode&ExtFactor2+++++++Result++++++++Len++D+HiLoEq

 * Aláírás
C                   EVAL      XD1=19.6             
C                   EVAL      YD1=17.0
C                   WRITE     WRALAIRAS

 * Detail - tételek
C                   EVAL      XD2=10.2            
C                   EVAL      YD1=2.0
C                   EVAL      YD2=5.2
C                   WRITE     WRDETAIL

 Természetesen az értékeket számolni kell, itt csak az értékadást mutattam be. Én mindig egy változót szoktam használni annak rögzítésére, hogy éppen hol járok a papíron. Mondjuk kiíratom a fejrészt, ami 9 cm-rel a lap tetejétől ér véget. Akkor a változót (mondjuk AktPoz) feltöltöm a szükséges értékkel:

DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++

D  AktPoz         S              5  3
D  SorTavolsag    S              5  3

/Free
   AktPoz = 9,0;
/End-Free

 Én a sortávolságra is fel szoktam venni egy változót, mert akkor még azt is tudom változtatni:

/Free
   SorTavolsag = 0,6;       // 6 mm lesz a sortávolság
/End-Free

Ha kiírok egy sort, akkor az aktuális pozíciót is növelni kell, mégpedig a sortávolsággal:

/Free
   AktPoz = AktPoz + SorTavolsag;     // Ekkor AktPoz 9,6 cm lesz  (9,0 + 0,6)
/End-Free

Természetesen a lap alját figyelni kell, és ha túl közel vagyunk hozzá, akkor lapdobást kell eszközölnünk. Ehhez a printerfájlban fel kell vennünk egy új rekordot:

A               R NEWPAGE                          
A                                           ENDPAGE

A programban pedig így tudunk lapdobást végrehajtani, ha elértük mondjuk a 27 cm-t:

 * lapdobás                  
C                   IF        AktPoz > 27,0
C                   WRITE     NEWPAGE
C                   EVAL      AktPoz = 9,0
C                   ENDIF 

 

A bejegyzés trackback címe:

https://as400programozas.blog.hu/api/trackback/id/tr216085502

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása