Vai al contenuto

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 minore
  • grid-det-rn-start - Restart in avanti
  • grid-det-rp-start-less - Restart all'indietro
  • grid-det-rp-start-equal - Restart per chiave identica
  • grid-det-rp-fill-key - Muovo la prima chiave sulla chiave di lettura
  • grid-det-rp-fill-key-from-b - Muovo l'ultima chiave sulla chiave di lettura
  • grid-det-sn-read - Lettura record successivo
  • grid-det-sp-read - Lettura record precedente
  • grid-det-fill-t-key - Salvo la chiave del record sulla prima chiave
  • grid-det-fill-b-key - Salvo la chiave del record sulla ultima chiave
  • grid-det-rst-next - Eseguo una restart in avanti
  • grid-det-rst-not-less - Eseguo una restart per chiave non minore
  • grid-det-rst-previous - Eseguo una restart all'indietro (comprende start all'indietro e una in avanti)
  • grid-det-src-next - Ricerca del record successivo
  • grid-det-src-previous - Ricerca del record precedente
  • grid-det-pg-after-giu - Scroll in basso di una riga
  • grid-det-pg-after-su - Scroll in alto di una riga
  • grid-det-pg-after-pg-dwn - Scroll in basso di una pagina intera
  • grid-det-pg-after-pg-up - Scroll in alto di una pagina intera
  • grid-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 leggere
  • grid-det-controlli-fill - Controllo se utilizzare il record letto
  • grid-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