[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Numeracja stron w ramach jednego strumienia



On 19 Dec 97 at 10:48, Jerzy Sitarz wrote:

> P.S.
> 
>  Dobrze byloby miec mozliwosc obslugi trygera:
> 
>    ON PAGE-CHANGE ON STREAM ss DO :
> 
>    END . /* On */
> 
> 
>   Ktos ma jakis pomysl ?

Ja.

(Opis ponizej kodu.)
-------------------------------------------------------
def var v_i as int no-undo.
def var v_page_no as int initial 1 no-undo.

output to zzz.txt paged page-size 10.
do v_i = 1 to 200:
  form header
    fill( " ", 40 ) format "x(40)"
    v_page_no format ">9" "/" page-number format ">9" skip(1)
    with frame a page-top no-box.

  view frame a.

  if line-counter = page-size + 1 then /* Zmienila sie strona */
  do:
    v_page_no = v_page_no + 1.                       /* L1 */ 
    put "Pierwszy wiersz ponizej naglowka." skip.    /* L2 */
  end.

  put v_i skip.
end.
output close.
-----------------------------------------------------


Powyzszy przyklad mozna uzupelnic o przestawianie v_page_no na 1 przy 
zmianie kontrahenta, aby uzyskac efekt, o ktory oryginalnie chodzilo.

Warunek "line-counter = page-size + 1" okresla moment zmiany strony. 
Trzeba jednakze dobrze rozumiec, jak Progress obsluguje naglowki i 
numeracje stron, aby uniknac pomylki. Np. zamiana kolejnosci wierszy 
okreslonych /* L1 */ i /* L2 */ spowoduje bledne dzialanie. Jesli 
wiesz dlaczego to mozesz dalej nie czytac.

Po wydrukowaniu ostatniego wiersza na stronie znajdujemy sie "przed" 
pierwszym wierszem na kolejnej stronie. To wtedy zachodzi: 
"line-counter = page-size + 1". Komenda "view frame a." niczego nie 
wypisze, bo moze nic juz nie bedzie wydrukowane i powstalby naglowek 
na poczatku pustej strony. Natomiast po dojsciu do komendy "put" 
wiadomo, ze cos sie wydrukuje, wiec najpierw zwieksza sie 
page-number, nastepnie drukuje sie naglowek, a potem realizuje sie 
"put". Dlatego zwiekszenie v_page_no przed put'em powoduje, ze 
zwiekszona wartosc zostanie wypisana w naglowku.

Powodzenia!

Tomasz Judycki          tjudycki@elbacsb.com.pl

ELBA-CSB SA,            tel (48 22) 610 85 80 ext. 335
Plowiecka 1,            fax (48 22) 612 20 61
04-204 Warsaw,
Poland
http://www.elbacsb.com.pl