Files correlati : report.alx Ricompilazione Demo : [ ] Commento : Tolto MON inserito inavvertitamente per debug git-svn-id: svn://10.65.10.50/trunk@13683 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			219 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			219 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
| \ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 | |
| \ Funzioni di aiuto per implementazione messaggi
 | |
| \ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 | |
| 
 | |
| : REP_GET_POS.X ( f1 -- n1 ) 
 | |
|   GET_POS DROP 
 | |
| ;
 | |
| 
 | |
| : REP_GET_POS.Y ( f1 -- n1 ) 
 | |
|   GET_POS NIP 
 | |
| ;
 | |
| 
 | |
| : REP_GET_SIZE.X ( f1 -- n1 ) 
 | |
|   GET_SIZE DROP 
 | |
| ;
 | |
| 
 | |
| : REP_GET_SIZE.Y ( f1 -- n1 ) 
 | |
|   GET_SIZE NIP 
 | |
| ;
 | |
| 
 | |
| : REP_GET_BOTTOM ( f1 -- n1 )
 | |
|   DUP 
 | |
|   REP_GET_POS.Y
 | |
|   SWAP 
 | |
|   REP_GET_SIZE.Y
 | |
|   +
 | |
| ;
 | |
| 
 | |
| : REP_OFFSET_FIELD_POS.X ( n1 -- ) 
 | |
|   #THIS REP_GET_POS.X     \ Legge posizione x
 | |
|   +                       \ La incrementa di n1
 | |
|   #THIS REP_GET_POS.Y     \ Legge posizione y
 | |
|   #THIS SET_POS           \ Aggiorna posizione
 | |
| ;
 | |
| 
 | |
| : REP_OFFSET_FIELD_POS.Y ( n1 -- ) 
 | |
|   #THIS REP_GET_POS.Y     \ Legge posizione y
 | |
|   +                       \ La incrementa di n1
 | |
|   #THIS REP_GET_POS.X     \ Legge posizione x
 | |
|   SWAP                    \ Scambia le coordinate
 | |
|   #THIS SET_POS           \ Aggiorna posizione
 | |
| ;
 | |
| 
 | |
| : REP_MESSAGE_ALIGN_BOTTOM ( f1 -- )
 | |
|   REP_GET_BOTTOM          \ Calcola fondo di f1
 | |
|   #THIS REP_GET_BOTTOM    \ Calcola fondo del campo corrente
 | |
|   -                       \ Calcola offset come differenza dei due
 | |
|   REP_OFFSET_FIELD_POS.Y  \ Incrementa posizione y del campo corrente
 | |
| ;
 | |
| 
 | |
| : REP_MESSAGE_ALIGN_TOP ( f1 -- )
 | |
|   REP_GET_POS.Y           \ Legge posizione y del capo f1
 | |
|   #THIS REP_GET_POS.X     \ Legge posizione x del campo corrente
 | |
|   SWAP                    \ Scambia le coordinate
 | |
|   #THIS SET_POS           \ Aggiorna posizione del campo corrente
 | |
| ;
 | |
| 
 | |
| : REP_MESSAGE_ALIGN_CENTER ( f1 -- )
 | |
|   REP_GET_BOTTOM          \ Calcola fondo del campo f1
 | |
|   #THIS REP_GET_BOTTOM    \ Calcola fondo del campo corrente
 | |
|   - 2 /                   \ Calcola offset verticale
 | |
|   REP_OFFSET_FIELD_POS.Y  \ Aggiorna posizione del campo corrente
 | |
| ;
 | |
| 
 | |
| : REP_MESSAGE_ALIGN_UNDER ( f1 -- )
 | |
|   REP_GET_BOTTOM          \ Calcola fondo di f1
 | |
|   #THIS REP_GET_POS.Y     \ Calcola inizio del campo corrente
 | |
|   -                       \ Calcola offset come differenza dei due
 | |
|   REP_OFFSET_FIELD_POS.Y  \ Incrementa posizione y del campo corrente
 | |
| ;
 | |
| 
 | |
| : REP_COPY_HEIGHT ( f1 -- )
 | |
|   REP_GET_SIZE.Y          \ Altezza campo origine
 | |
|   #THIS REP_GET_SIZE.X    \ Larghezza campo destinazione
 | |
|   SWAP                    \ Scambia parametri per set_size
 | |
|   #THIS SET_SIZE          \ Aggiorna dimensioni
 | |
| ;
 | |
| 
 | |
| : REP_FIELD_NOT_NULL ( f1 -- f1 b1 )
 | |
|   SP 
 | |
| ;
 | |
| 
 | |
| \ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 | |
| \ Implementazione dei vari messaggi standard
 | |
| \ f1 campo o sezione del report
 | |
| \ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 | |
| 
 | |
| : MESSAGE_ADD ( f1 -- )
 | |
|   #THIS @                      \ Leggo il valore del campo corrente
 | |
|   SWAP +!                      \ Incrementa f1 col contenuto del campo corrente
 | |
| ;
 | |
| 
 | |
| : MESSAGE_ALIGN ( s1 f1 -- )
 | |
|   SWAP                         \ Porta su il tipo di allineamento (BOTTOM)
 | |
|   "REP_MESSAGE_ALIGN_" SWAP +  \ Si crea il nome della funzione da chiamare
 | |
|   PERFORM                      \ Chiama ad esempio DO_MESSAGE_ALIGN_BOTTOM, ecc... 
 | |
| ;
 | |
| 
 | |
| : MESSAGE_APPEND ( f1 -- )
 | |
|   #THIS @                      \ Leggo il valore del campo corrente
 | |
|   DUP EMPTY=                   \ Controlla se e' vuoto
 | |
|   IF
 | |
|     DROP                       \ Scarta il valore nullo 
 | |
| 	DROP                       \ Scarta f1
 | |
|   ELSE
 | |
|     OVER @                     \ Leggo il valore di f1
 | |
| 	EMPTY= NEGATE
 | |
| 	IF 
 | |
|       " " SWAP +               \ Sommo uno spazio all'inizio della stringa
 | |
|     THEN  
 | |
| 	SWAP                       \ Riporto in primo piano f1
 | |
|     +!                         \ Incrementa f1 col contenuto della stringa
 | |
|   THEN
 | |
| ;
 | |
| 
 | |
| : MESSAGE_APPEND_CR ( f1 -- )
 | |
|   #THIS @                      \ Leggo il valore del campo corrente
 | |
|   DUP EMPTY=                   \ Controlla se e' vuoto
 | |
|   IF
 | |
|     DROP                       \ Scarta il valore nullo 
 | |
| 	DROP                       \ Scarta f1
 | |
|   ELSE	 
 | |
|     CR                         \ Inserisco un "a capo"
 | |
| 	SWAP
 | |
|     +                          \ Sommo un "a capo" all'inizio della stringa
 | |
|     SWAP                       \ Riporto in primo piano f1
 | |
|     +!                         \ Incrementa f1 col contenuto della stringa
 | |
|   THEN
 | |
| ;
 | |
| 
 | |
| 
 | |
| : MESSAGE_COPY ( f1 ... fn -- )
 | |
|   BEGIN                        \ Ciclo sui prametri 
 | |
|     REP_FIELD_NOT_NULL
 | |
|   WHILE              
 | |
|     #THIS @ SWAP !             \ Copia il campo corrente
 | |
|   REPEAT
 | |
| ;
 | |
| 
 | |
| : MESSAGE_DEBUG ( NULL -- )
 | |
|   MON                          \ Attiva il fantastico debugger
 | |
| ;
 | |
| 
 | |
| : MESSAGE_DISABLE ( f1 ... fn -- )
 | |
|   BEGIN                        \ Ciclo sui prametri 
 | |
|     REP_FIELD_NOT_NULL
 | |
|   WHILE              
 | |
| 	DISABLE                    \ Report defined word
 | |
|   REPEAT
 | |
| ;
 | |
| 
 | |
| : MESSAGE_ENABLE ( f1 ... fn -- )
 | |
|   BEGIN                        \ Ciclo sui parametri 
 | |
|     REP_FIELD_NOT_NULL
 | |
|   WHILE              
 | |
| 	ENABLE                     \ Report defined word
 | |
|   REPEAT
 | |
| ;
 | |
| 
 | |
| : MESSAGE_HIDE ( f1 ... fn -- )
 | |
|   BEGIN                        \ Ciclo sui prametri 
 | |
|     REP_FIELD_NOT_NULL
 | |
|   WHILE              
 | |
| 	HIDE                       \ Report defined word
 | |
|   REPEAT
 | |
| ;
 | |
| 
 | |
| : MESSAGE_INCR ( f1 ... fn -- )
 | |
|   BEGIN                        \ Ciclo sui prametri 
 | |
|     REP_FIELD_NOT_NULL
 | |
|   WHILE              
 | |
| 	INCR                       \ Native word
 | |
|   REPEAT
 | |
| ;
 | |
| 
 | |
| : MESSAGE_ISAMREAD ( s1 s2 n1 -- )
 | |
|   ISAM_READ
 | |
| ;
 | |
| 
 | |
| : MESSAGE_PAGENO ( -- )        \ Numero di pagina corrente
 | |
|   #REPORT.PAGE @               \ Leggo il numero di pagina
 | |
|   #THIS !                      \ Setto il campo corrente col numero 
 | |
| ;
 | |
| 
 | |
| : MESSAGE_RESET ( f1 ... fn -- )
 | |
|   BEGIN                        \ Ciclo sui prametri 
 | |
|     REP_FIELD_NOT_NULL
 | |
|   WHILE              
 | |
|     NULL SWAP !                \ Azzera campo
 | |
|   REPEAT
 | |
| ;
 | |
| 
 | |
| : MESSAGE_SHOW ( f1 ... fn -- )
 | |
|   BEGIN                        \ Ciclo sui prametri 
 | |
|     REP_FIELD_NOT_NULL
 | |
|   WHILE              
 | |
| 	SHOW                       \ Report defined word
 | |
|   REPEAT
 | |
| ;
 | |
| 
 | |
| : MESSAGE_SUB ( f1 -- )
 | |
|   #THIS @                      \ Leggo il campo corrente
 | |
|   -1 *                         \ Lo cambio di segno
 | |
|   SWAP +!                      \ Decrementa f1 col contenuto del campo corrente
 | |
| ;
 | |
| 
 | |
| : MESSAGE_TABLEREAD ( s1 s2 s3 -- )
 | |
|   TABLE_READ
 | |
| ;
 | |
| 
 | |
| : MESSAGE_TODAY ( -- )         \ Data odierna
 | |
|   #SYSTEM.DATE @               \ Leggo la data
 | |
|   #THIS !                      \ Setto il campo corrente con la data
 | |
| ;
 | |
| : MESSAGE_DITTA ( s1 -- )
 | |
|   FIRM                         \ Campi della ditta corrente
 | |
| ;
 | |
| 
 |