Griglie Evolute - Griglie Modo "A"¶
Gestione griglie modo "A"¶
Z-nomegrid-RIORDINA¶
Effettua il riordinamento della griglia. Racchiude alcune routine che eseguono operativamente le varie fasi.
Esempio della chiamata alla routine Questa routine viene richiamata da alcune procedure automatiche: - X-ATTIVA-POPUP-nomegrid - Z-PROCESSA-EVENT-nomegrid
Esempio della routine
*------------------------------------------------------------------*
* Eseguo il riordinamento in funzione della colonna desiderata
*------------------------------------------------------------------*
z-grid-det-riordina.
perform Z-nomegrid-MOSTRA-ORD
perform Z-nomegrid-RIORDINA-RECORD
if gor-r-ok = 'N'
exit paragraph
end-if
perform Z-nomegrid-RIORDINA-TRANSITO
move ' ' to gor-r-fl-read
initialize t-gor-r-rec
move 'S' to w-grid-det-ord-reset
.
Z-nomegrid-ORD-AGGIUNGI¶
Operazioni necessarie per aggiungere una colonna all'ordinamento attuale (preparazione).
Esempio della routine
*------------------------------------------------------------------*
* Aggiungo una colonna all'ordinamento
*------------------------------------------------------------------*
z-grid-det-ord-aggiungi.
if w-grid-det-ord-reset = 'S'
move 0 to gor-r-pnt
move 'N' to w-grid-det-ord-reset
end-if
* Cerco se la colonna e' gia' stata selezionata
move 1 to gor-r-k
perform gor-r-pnt times
if gor-r-col (gor-r-k) = gor-r-col-sel
exit perform
end-if
add 1 to gor-r-k
end-perform
if gor-r-k <= gor-r-pnt
exit paragraph
end-if
* Aggiungo la colonna all'ordinamento
if gor-r-pnt = 10
move m-tb-max-colonne-ord-grid to wb-msg
perform vbx-msg-error
else
add 1 to gor-r-pnt
move gor-r-col-sel to gor-r-col (gor-r-pnt)
if funzio = k-pmg-ord-aggiungi-des
move 'D' to gor-r-ord-tipo (gor-r-pnt)
else
move 'A' to gor-r-ord-tipo (gor-r-pnt)
end-if
end-if
perform Z-nomegrid-COMPONI-ORD
.
Z-nomegrid-ORD-AGGIUNGI-MSG¶
Visualizzazione di un messaggio informativo che mostra l'ordinamento corrente.
*------------------------------------------------------------------*
* Messaggio informativo sull'ordinamento corrente
*------------------------------------------------------------------*
z-grid-det-ord-aggiungi-msg.
string m-tb-ord-selezionato k-newline
w-grid-det-descrizione-ord
delimited ' ' into wb-msg
perform vbx-msg-info
.
Z-nomegrid-MOSTRA-ORD¶
La stringa che contiene l'ordinamento corrente viene visualizzata sull'apposito controllo.
Viene anche richiamata manualmente quando si deve impostare un ordinamento manuale (le colonne sono selezionate da un default o da una configurazione).
*------------------------------------------------------------------*
* Mostro la colonna su cui e' stato impostato l'ordinamento
*------------------------------------------------------------------*
z-grid-det-mostra-ord.
modify handle-status-bar,
panel-index = 3,
panel-text = tm-tab-descrizione-ord
.
Z-GEN-CREA-TRANSITO-INIT¶
Routine generica collegata alle griglie, che centralizza alcune operazioni per la visualizzazione del messaggio incrementale costruito in Z-GEN-CONTATORE.
Esempio della chiamata alla routine Viene richiamata durante la costruzione del file di transito nel programma sorgente.
*------------------------------------------------------------------*
* Operazioni iniziali sul caricamento file di transito
*------------------------------------------------------------------*
z-grid-det-crea-transito-init.
move m-tb-crea-transito-init-01 to wb-g1
move 0 to w-gen-t-n-rec
move 0 to w-gen-ca
move 0 to w-gen-ca-ed
string m-tb-crea-transito-init-02 ' ' w-gen-ca-ed
' ' m-tb-crea-transito-init-03
delimited size into wb-g2
perform clock-msg
.
Z-nomegrid-NOME-TRANSITO¶
Attribuzione del nome del file di transito.
*------------------------------------------------------------------*
* Attribuzione nome del file di transito
*------------------------------------------------------------------*
z-grid-det-nome-transito.
string ext-tmp-dir delimited ' '
ext-os-slash delimited size
'#$' delimited size
k-program-id '_' delimited size
'grid-det_' delimited size
wo-oper delimited size
into w-nome-t-grid-det
.
Z-nomegrid-APRI-TRANSITO¶
Attribuzione del nome e apertura del file di transito.
*------------------------------------------------------------------*
* Attribuzione nome e apertura del file di transito
* per la gestione della griglia
*------------------------------------------------------------------*
z-grid-det-apri-transito.
perform z-grid-det-nome-transito
close t-grid-det
open output t-grid-det
if stato <> '00'
initialize wb-msg
string m-tb-problema-open-transito delimited ' '
stato k-newline 'file: ' w-nome-t-grid-det
delimited size into wb-msg
perform vbx-msg-error
go to fine
end-if
close t-grid-det
open i-o t-grid-det
.
Z-nomegrid-RIORDINA-TRANSITO¶
In questa routine viene ricostruita la chiave di ordinamento sul file di transito. Mostra una barra di avanzamento percentuale durante l'operazione.
Z-nomegrid-RIORDINA-RECORD¶
In questa routine viene ricostruita la chiave di ordinamento per un singolo record del file di transito.
Usa un evaluate su gor-r-col (gor-r-k) per determinare quale campo usare come chiave, con supporto per ordinamento ascendente e discendente tramite inversione ASCII.
Z-nomegrid-TEST-LUNGHEZZA¶
Routine che verifica se è possibile aggiungere una colonna alla chiave di ordinamento (max 250 caratteri), restituendo l'esito.
*------------------------------------------------------------------*
* Verifico se la stringa di ordinamento non supera i 250 caratteri
*------------------------------------------------------------------*
z-grid-det-test-lunghezza.
if (gor-r-off + gor-r-fld - 1) > gor-r-l-ord
compute gor-r-fld = gor-r-l-ord - gor-r-off + 11
move m-tb-ord-troppo-lungo to wb-msg
perform vbx-msg-error
move 'N' to gor-r-ok
end-if
.
Z-nomegrid-INVERTI-DATO¶
Un dato passato in input viene convertito con il suo "complementare" ASCII, per gestire l'ordinamento discendente.
*------------------------------------------------------------------*
* Inversione di una stringa per l'ordinamento discendente
*------------------------------------------------------------------*
z-grid-det-inverti-dato.
move 0 to gor-r-z
perform gor-r-fld times
add 1 to gor-r-z
move function ord(w-grid-det-str-inversa (gor-r-z:1))
to gor-r-char-ascii
compute gor-r-char-ascii = 255 - gor-r-char-ascii
move function char(gor-r-char-ascii)
to w-grid-det-str-inversa (gor-r-z:1)
end-perform
.
Z-nomegrid-COMPONI-ORD¶
In funzione delle colonne attualmente selezionate, questa routine compone una stringa che contiene l'ordinamento corrente.
Evidenzia le colonne selezionate nell'intestazione griglia con il colore ext-color-int-grid-ord e aggiunge l'indicazione "(A)" o "(D)" accanto al nome colonna.
Z-nomegrid-CREA-TRANSITO-INIT¶
Questa routine racchiude alcune operazioni standard da eseguire all'inizio della costruzione del file di transito.
*------------------------------------------------------------------*
* Operazioni iniziali sul caricamento file di transito
*------------------------------------------------------------------*
z-grid-det-crea-transito-init.
move m-tb-crea-transito-init-01 to wb-g1
move 0 to gor-r-t-n-rec
move 0 to gor-r-ca
move 0 to gor-r-ca-ed
string m-tb-crea-transito-init-02 ' ' gor-r-ca-ed
' ' m-tb-crea-transito-init-03
delimited size into wb-g2
perform clock-msg
.
Z-nomegrid-CONTATORE¶
Incremento del contatore e visualizzazione del contatore con ritardo progressivo.
Stesso meccanismo di Z-GEN-CONTATORE, usando le variabili gor-r-* invece di w-gen-*.
Z-nomegrid-INSERISCI-T-REC¶
Questa routine centralizza la fase di scrittura di un record nel file di transito e alcune operazioni accessorie.
*------------------------------------------------------------------*
* Operazioni di inserimento record in tabella di transito
*------------------------------------------------------------------*
z-grid-det-inserisci-t-rec.
perform wr-t-grid-det
if w-verbo-invalido
string m-tb-err-ins-t-rec ' ' t-gor-r-chia1
delimited size into wb-msg
perform vbx-msg-error
else
perform Z-nomegrid-CONTATORE
end-if
.
Z-RIEMPI-T-GOR-merce¶
Questa routine riempe nel record di transito i campi collegati ad una merce (necessari per l'ordinamento su di essi). Usa COGS68W con operazione 'Estrai-Dati' per recuperare descrizione e codici correlati.
Z-AGGIORNA-T-GOR-nomecampo¶
Serie di routines costruite per tutte le colonne modificabili della griglia: ciascuna permette l'aggiornamento del file di transito dopo la modifica di una colonna.
Tre varianti principali: - Colonna standard: aggiorna solo il campo modificato - Colonna "codice anagrafico": aggiorna anche la descrizione - Colonna "merce": aggiorna tutte le colonne collegate
Z-AGGIORNA-T-GOR-TUTTI¶
Routine unica che permette l'aggiornamento di un record del file di transito con tutti i campi presenti in griglia. Utile quando una cella ha colonne correlate non editabili per cui non viene costruita la routine Z-AGGIORNA-T-GOR-nomecampo specifica.
BUILD-MAIN-POPUP-nomegrid¶
Creazione del menu pop-up collegato alla griglia. Contiene anche un entry-point che permette di aggiungere altre voci.
Le voci standard del menu sono: - Aggiungi ordinamento ascendente (k-pmg-ord-aggiungi-asc) - Aggiungi ordinamento discendente (k-pmg-ord-aggiungi-des) - Avvia ordinamento (k-pmg-ordinamento)
Al termine viene inserito un entry-point richiesto nel programma: z-grid-det-aggiungi-voci-popup-ep.
X-DESTROY-MENU-nomegrid¶
Rimozione dell'handle del menu pop-up dalla memoria. Va richiamata alla fine del programma.
*------------------------------------------------------------------*
* DESTROY del menu pop-up griglia
*------------------------------------------------------------------*
x-destroy-menu-grid-det.
if grid-det-menu-handle <> 0
call 'W$MENU' using wmenu-destroy, grid-det-menu-handle,
giving myResult
end-if
.
X-ATTIVA-POPUP-nomegrid¶
Gestione delle operazioni che possono essere richiamate dal menu pop-up per l'ordinamento: - Aggiunta di una colonna ascendente - Aggiunta di una colonna discendente - Avvio ordinamento
Al termine viene inserito un entry-point per gestioni custom: x-attiva-popup-grid-det-ep.
Z-nomegrid-POPUP-AGGIORNA-ORD¶
Nel menu pop-up, le descrizioni delle voci di ordinamento vengono modificate, a seconda che l'ordinamento sia già stato applicato oppure no (usa w-grid-det-ord-reset).
Z-nomegrid-CARICA-TAB¶
Questa routine gestisce le operazioni necessarie per il caricamento iniziale della griglia paginata.
*------------------------------------------------------------------*
* Caricamento della tabella di working griglia
*------------------------------------------------------------------*
z-grid-det-carica-tab.
modify e-grid-det, mass-update = 1
move 1 to i
perform Z-SVUOTA-TUTTO-nomegrid
modify e-grid-det, mass-update = 0
initialize tm-grid-det-dati
move 0 to gor-r-n-m
compute gor-r-w-t-size = w-lines-grid-det - 1
move gor-r-w-t-size to gor-r-t-length gor-r-t-size
perform X-nomegrid-SPAGINAMENTO-START
perform rem-clk
move 1 to i
perform Z-COSTRUISCI-nomegrid
if gor-r-n-m <> 0
modify e-grid-det,
cursor-x = 1, cursor-y = 2
else
modify e-grid-det,
cursor-x = 1, cursor-y = 1
end-if
.
Z-SVUOTA-TUTTO-nomegrid / Z-COSTRUISCI-nomegrid¶
Routine di supporto per svuotare e ricostruire il contenuto della griglia.
X-nomegrid-SPAGINAMENTO-START¶
Racchiude alcune operazioni comuni necessarie per iniziare lo spaginamento sul file di transito.
*------------------------------------------------------------------*
* Mi posiziono all'inizio dei dati
*------------------------------------------------------------------*
x-grid-det-spaginamento-start.
move ' ' to gor-r-fl-read
initialize t-gor-r-rec
perform grid-det-rst-not-less
.
Nomegrid-* varie spaginamento¶
Insieme di routine necessarie nell'ambito dello spaginamento griglia, per il corretto posizionamento sui record del file di transito:
grid-det-rn-start-not-less- Restart per chiave non minoregrid-det-rn-start- Restart in avantigrid-det-rp-start-less- Restart all'indietrogrid-det-rp-start-equal- Restart per chiave identicagrid-det-rp-fill-key- Muovo la prima chiave sulla chiave di letturagrid-det-rp-fill-key-from-b- Muovo l'ultima chiave sulla chiave di letturagrid-det-sn-read- Lettura record successivogrid-det-sp-read- Lettura record precedentegrid-det-fill-t-key- Salvo la chiave del record sulla prima chiavegrid-det-fill-b-key- Salvo la chiave del record sulla ultima chiavegrid-det-rst-next- Eseguo una restart in avantigrid-det-rst-not-less- Eseguo una restart per chiave non minoregrid-det-rst-previous- Eseguo una restart all'indietro (comprende start all'indietro e una in avanti)grid-det-src-next- Ricerca del record successivogrid-det-src-previous- Ricerca del record precedentegrid-det-pg-after-giu- Scroll in basso di una rigagrid-det-pg-after-su- Scroll in alto di una rigagrid-det-pg-after-pg-dwn- Scroll in basso di una pagina interagrid-det-pg-after-pg-up- Scroll in alto di una pagina interagrid-det-pg-reload- Reload della pagina corrente
Z-99-PROCESSA-EVENT-nomegrid¶
Gestione eventi su griglia paginata. Gestisce:
- msg-begin-entry - Determina il tipo di entry (DBLCLICK/ENTER)
- msg-paged-prev / msg-paged-next - Scroll di una riga
- msg-paged-nextpage / msg-paged-prevpage - Scroll di una pagina
- msg-heading-dblclick - Ordinamento rapido: singolo click ordina ascendente, doppio click sulla stessa colonna ordina discendente
- Gestione ridimensionamento form (z-ntf-resized-on-grid-det)
Nomegrid-* varie riempimento record¶
Queste routines sostituiscono quelle che nelle griglie paginate standard sono presenti all'interno del sorgente: questo serve per poter gestire più griglie nel programma, e perchè anche la fase di caricamento della tabella collegata alla griglia è totalmente automatizzata.
grid-det-controlli-read- Controllo se smettere di leggeregrid-det-controlli-fill- Controllo se utilizzare il record lettogrid-det-fill-tab- Dal record di transito riempo la tabella
Z-ESPORTA-nomegrid¶
Routine che viene richiamata per l'esportazione del contenuto del file di transito collegato alla griglia su Excel. Crea una griglia temporanea invisibile, la popola con tutti i record del file di transito, poi chiama GRIDTOXS per l'export. Al termine distrugge la griglia temporanea e ripristina lo stato precedente.
Z-AGGIUNGI-RIGA-nomegrid¶
Gestione griglie modificabili.
Questa routine serve per preparare la griglia all'inserimento di una nuova riga. Nella routine viene aggiunta la nuova riga alla tabella di working associata alla griglia. Dopodiche' la riga viene visualizzata.
Esempio della chiamata alla routine
if ctrl-a and
a-modalita = "A"
move gcn-tcl-cod to gcn-w-ctr-add
perform z-aggiungi-riga-tm-tab
go to a-grid
end-if
Le fasi operative:
1. Verifica abilitazione inserimento (w-abi-ins)
2. Controlla il contenuto della cella di controllo (se vuota, non aggiunge)
3. Inserisce la riga nella griglia con insert-rows
4. Aggiunge un elemento alla tabella di working e lo inizializza
5. Posiziona il cursore sulla prima cella della nuova riga
6. Esegue l'entry-point se richiesto (z-aggiungi-riga-tm-tab-ep)
7. Visualizza la riga (x-modify-riga-tm-tab)
Z-AGGIUNGI-RIGA-nomegrid-EP¶
Questa routine dovrà risiedere nel sorgente, e viene richiesta se l'apposita casella viene spuntata. In questa routine si fa riferimento alla riga appena aggiunta. L'indice relativo non è ancora stato aggiornato, quindi si dovrà usare come indice il numero corrente di elementi della tabella: TM-nomegrid-DATI-PNT.
Z-IMPOSTA-RIGA-ALT-nomegrid¶
Gestione griglie modificabili.
Questa routine serve per cambiare il layout della griglia in funzione dell'abilitazione alla modifica. L'abilitazione viene data modificando il valore di FL-MOD-nomegrid.
Se la griglia è modificabile (fl-mod = 'S'), rende il colore della griglia omogeneo (row-color-pattern = (0, 0)).
Altrimenti reimposta la griglia alternata (row-color-pattern = (ext-color-grid-alt-row, 0)).
Z-GESTIONE-TF-nomegrid-AUTO¶
Gestione griglie modificabili.
Questa routine viene generata sempre per ciascuna griglia modificabile. Permette l'attivazione e/o la disattivazione dei tasti funzione sulle celle di una griglia di tipo "speciale" (ad esempio merci, anagrafiche cli/for, ecc).
Gestisce automaticamente i tasti funzione per:
- Campi data (F8 calendario)
- Anagrafiche clienti/fornitori (S65 codice e descrizione)
- Anagrafiche agenti (S65 codice e descrizione)
- Anagrafiche merci (vari campi: cm, dm, cma, cmf, cmc, ean)
- Per tutti gli altri campi: disattiva il calendario e richiama l'entry-point manuale Z-gestione-tf-nomegrid-ep
Estratto da documentazione interna ClickUp