Griglie Evolute - Griglie Modificabili¶
Gestione griglie modificabili¶
Z-99-ACCEPT-nomegrid¶
Routine da eseguire al posto di una accept diretta di una griglia, permette di gestire una serie di automatismi collegati alla gestione degli eventi, colori, ecc.
Esempio della chiamata alla routine Questa routine deve essere inserita in un programma nel punto in cui si esegue l'accept della griglia.
a-grid.
modify e-frame-dettaglio, title = m-frame-dettaglio
initialize x-enabled
perform z-carica-controlli
perform x-attiva-tf-grid
modify e-tm-tab, enabled = 1
.
a-accept-grid.
perform z-99-accept-grid
if wesc go to fine.
if f-event
if event-type = msg-begin-entry
inquire e-tm-tab,
entry-reason in w-entry-reason
if w-entry-double-click or
w-entry-enter
set funzio to k-fun-invio
end-if
else
go to x-test-mouse
end-if
end-if
.....
Esempio della routine
**---------------------------------------------------------------**
** Routine per accept griglia: grid-det
**---------------------------------------------------------------**
z-99-accept-grid-det.
move "S" to fl-sono-su-grid
inquire e-grid-det, cursor-y in w-cell-y
if last-row-grid-det > 1
compute i-grid-color = last-row-grid-det - 1
if i-grid-color > gor-r-n-m and
gor-r-n-m > 0
move gor-r-n-m to i-grid-color
end-if
perform X-SET-ROW-nomegrid-COLOR
modify e-grid-det, y = last-row-grid-det,
row-color = row-grid-color
end-if
if ext-riga-sel-griglie-mod = 'S' or
fl-mod-grid-det <> 'S'
modify e-grid-det, y = w-cell-y,
row-color = ext-color-grid-row-sel
end-if
move w-cell-y to last-row-grid-det
if w-cell-y > 1
compute i = w-cell-y - 1
end-if
perform z-operazioni-acc-grid-det
if w-grid-before-time = 0
accept e-grid-det on exception continue
end-accept
else
accept e-grid-det
before time w-grid-before-time
on exception continue
end-if
move "N" to fl-sono-su-grid
inquire e-grid-det, id in control-id,
cursor-x in w-cell-x,
cursor-y in w-cell-y,
if wesc
exit paragraph
end-if
.
Z-99-EVENT-nomegrid¶
Routine che gestisce gli eventi principali per una griglia modificabile. Viene agganciato al componente "grid" nella screen section, ma viene anche richiamata in alcune procedure automatiche, soprattutto per scollegarla/ricollegarla alla griglia.
Esempio della routine
**---------------------------------------------------------------**
** Gestione eventi per griglia: grid-det
**---------------------------------------------------------------**
z-99-event-grid-det.
if last-row-grid-det > 1
inquire e-grid-det, y in w-cell-y
compute i-grid-color = last-row-grid-det - 1
perform x-set-row-grid-det-color
modify e-grid-det,
y = last-row-grid-det,
row-color = row-grid-color
modify e-grid-det, y = w-cell-y
end-if
if event-type = msg-goto-cell or
event-type = msg-goto-cell-mouse
inquire e-grid-det, y in w-cell-y
else
inquire e-grid-det, cursor-y in w-cell-y
end-if
inquire e-grid-det, x in w-cell-x
if w-cell-y not = 0 and
w-cell-y not = 1
compute i = w-cell-y - 1
end-if
if fl-sono-su-grid = 'S'
if ext-riga-sel-griglie-mod = 'S' or
fl-mod-grid-det <> 'S'
modify e-grid-det, y = w-cell-y,
row-color = ext-color-grid-row-sel
end-if
end-if
modify e-grid-det, event procedure null
perform z-operazioni-acc-grid-det
perform z-event-grid-det-ep
perform z-gestione-tf-grid-det-auto
evaluate event-type
when msg-begin-entry
if event-action = event-action-normal
perform Z-nomegrid-BEGIN-ENTRY
end-if
when msg-finish-entry
move 'S' to fl-validazione-post-accept
perform z-grid-det-finish-entry
move 'N' to fl-validazione-post-accept
when msg-cancel-entry
perform z-grid-det-cancel-entry
end-evaluate
perform z-event-grid-det-after
modify e-grid-det, event procedure z-99-event-grid-det
evaluate event-type
when msg-col-width-changed
perform x-grid-cambia-dimensione-colonna
end-evaluate
if w-cell-y > 1
if ext-riga-sel-griglie-mod = 'S' or
fl-mod-grid-det <> 'S'
modify e-grid-det, y = w-cell-y,
row-color = ext-color-grid-row-sel
end-if
end-if
move w-cell-y to last-row-grid-det
perform z-99-processa-event-grid-det
.
X-RICALCOLA-nomegrid¶
Permette il ridimensionamento della griglia, se previsto su screens.
Esempio della chiamata alla routine Questa routine viene richiamata da alcune procedure automatiche, ma al bisogno può essere usata nel programma.
*------------------------------------------------------------------*
* Gestione del ridimensionamento di una form in
* presenza di griglia paged: grid-det
*------------------------------------------------------------------*
z-ntf-resized-on-grid-det.
compute w-window-lines = event-data-1 / 100
compute w-window-size = event-data-2 / 100
perform x-ricalcola-grid-det
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
if w-lines-grid-det-pre not = w-lines-grid-det
if gor-r-n-m <> 0
initialize gor-r-fl-read
perform grid-det-rp-fill-key
perform grid-det-rst-not-less
end-if
if fl-sono-su-grid = 'S'
perform z-costruisci-grid-det
end-if
inquire e-grid-det, cursor-y in w-cell-y
if w-cell-y > (gor-r-t-length + 1)
compute w-cell-y = gor-r-t-length + 1
modify e-grid-det, cursor-y = w-cell-y
move gor-r-t-length to i
end-if
end-if
.
Esempio della routine
**---------------------------------------------------------------**
** Ricalcolo dimensioni griglia: grid-det
**---------------------------------------------------------------**
x-ricalcola-grid-det.
compute w-size-grid-det =
w-window-size - k-rel-size-grid-det
move w-lines-grid-det to w-lines-grid-det-pre
compute w-lines-grid-det =
w-pix-form-cella-y *
(w-window-lines - k-rel-lines-grid-det) /
(w-pix-grid-cella-y + 1)
compute w-lines-grid-det = w-lines-grid-det /
((ext-vpadding + 100) / 100)
modify e-grid-det,
lines = w-lines-grid-det,
size = w-size-grid-det
.
Z-PROCESSA-EVENT-nomegrid¶
(Sezione di smistamento eventi, dettagliata nel file griglie-modo-a.md)
Z-nomegrid-BEGIN-ENTRY¶
Gestione delle operazioni da eseguire prima della modifica di una cella.
Esempio della routine
**---------------------------------------------------------------**
** Gestione BEGIN-ENTRY griglia: grid-det
**---------------------------------------------------------------**
z-grid-det-begin-entry.
if i = 0
set event-action to event-action-fail-terminate
exit paragraph
end-if
inquire e-grid-det, x in w-cell-x,
entry-reason in w-entry-reason
inquire e-grid-det (1, w-cell-x),
hidden-data in w-hidden-data
move 'S' to w-cell-accept-ok
move ' ' to wb-msg
evaluate w-hid-data-col-id
when 'riga'
move tm-r-riga (i) to grb-r-riga
set event-action to event-action-fail-terminate
....
end-evaluate
if w-cell-accept-ok = 'N'
set event-action to event-action-fail-terminate
end-if
.
Z-nomegrid-FINISH-ENTRY¶
Gestione delle operazioni da eseguire dopo la modifica di una cella.
Esempio della routine
**---------------------------------------------------------------**
** Gestione FINISH-ENTRY griglia: grid-det
**---------------------------------------------------------------**
z-grid-det-finish-entry.
inquire e-grid-det,
x in w-cell-x, y in w-cell-y,
cell-data in w-cell-data,
finish-reason in w-finish-reason
inquire e-grid-det (1, w-cell-x),
hidden-data in w-hidden-data
move 'S' to fl-esc-agg
move 'S' to tm-r-fl-riga-mod (i)
evaluate w-hid-data-col-id
when 'data'
initialize util-s52
move 'Acc-ext' to s52-ope
move 'Z' to s52-verifica
move w-cell-data to s52-data-edit
set s52-handle-data to null
call 'COGS52W' using stringhe util-s52
if s52-esito = 'S'
move s52-data to tm-r-data (i)
modify e-grid-det (w-cell-y, w-cell-x),
cell-data = s52-data-edit
else
set event-action to event-action-fail
end-if
if (w-finish-naviga or
w-finish-reason > 0) and
fl-validazione-contestuale = 'S'
perform x-controlla-tm-r-data-auto
perform x-ctr-color-tm-r-data
if x-f3-ok-parziale = 'N'
move x-f3-msg to wb-msg
perform vbx-msg-error
set event-action to event-action-fail-terminate
end-if
end-if
when 'ora'
initialize util-s93
move 'Acc-ext' to s93-ope
move 'Z' to s93-verifica
move w-cell-data to s93-ora-edit
call 'COGS93W' using stringhe util-s93
if s93-esito = 'S'
move s93-ora to tm-r-ora (i)
modify e-grid-det (w-cell-y, w-cell-x),
cell-data = s93-ora-edit
else
set event-action to event-action-fail
end-if
when 'val-f'
initialize util-gridcol
move 'CERCA-DES' to gridcol-ope
...
when 'ana-des'
move w-cell-data to tm-r-ana-des (i)
...
when 'check'
continue
when 'ana-cod'
move function numval(w-cell-data)
to tm-r-ana-cod (i)
...
when 'mer'
perform z-grid-det-fe-mer
end-evaluate
initialize w-finish-reason
.
Z-nomegrid-CANCEL-ENTRY¶
Gestione delle operazioni da eseguire dopo che l'utente ha annullato la modifica di una cella.
Esempio della routine
**---------------------------------------------------------------**
** Gestione CANCEL-ENTRY griglia: grid-det
**---------------------------------------------------------------**
z-grid-det-cancel-entry.
if tm-grid-det-dati-pnt = 0
exit paragraph
end-if
inquire e-grid-det (1, w-cell-x),
hidden-data in w-hidden-data
evaluate w-hid-data-col-id
when 'data'
move grb-r-data to tm-r-data (i)
perform x-controlla-tm-r-data-auto
perform x-ctr-color-tm-r-data
when 'ora'
move grb-r-ora to tm-r-ora (i)
when 'val-f'
move grb-r-val-f to tm-r-val-f (i)
when 'ana-des'
move grb-r-ana-des to tm-r-ana-des (i)
when 'check'
move grb-r-check to tm-r-check (i)
when 'ana-cod'
move grb-r-ana-cod to tm-r-ana-cod (i)
perform x-controlla-tm-r-ana-cod-auto
perform x-ctr-color-tm-r-ana-cod
when 'mer'
move grb-r-mer-cm to tm-r-mer-cm (i)
move grb-r-mer-dm to tm-r-mer-dm (i)
perform x-controlla-tm-r-mer-auto
perform x-ctr-color-tm-r-mer
end-evaluate
move i to k-rg
perform x-modify-riga-grid-det
.
Estratto da documentazione interna ClickUp