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. Dopodichè la riga viene visualizzata.
Esempio della chiamata alla routine
In questo esempio il programma prevede una modalità di aggiornamento (a-modalità = "A") in cui è possibile aggiungere nuove righe.
Dopodichè definisco su quale colonna controllare se aggiungere la riga: se la colonna indicata è ancora vuota, non posso aggiungere righe. Per fare questo muoverò "GCN-'colid'" su "GNC-W-CTR-ADD".
Se devo inizializzare in modo particolare alcuni campi della riga tabella (ad esempio se ho dei flag che devono valere "S" o "N", li devo inizializzare a "N"), richiederò un entry-point nella apposita casella della definizione griglia.
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
Esempio della routine
**---------------------------------------------------------------**
** Aggiungo una riga alla griglia: 'tm-tab'
**---------------------------------------------------------------**
z-aggiungi-riga-tm-tab.
if w-abi-ins = 'N'
move m-no-abi-inserimento to wb-msg
perform vbx-msg-error
else
inquire e-tm-tab
(tm-grid-dati-pnt + 1, gcn-w-ctr-add),
cell-data in w-cell-data
if w-cell-data <> ' '
modify e-tm-tab,
insertion-index = tm-grid-dati-pnt + 2,
insert-rows = 1
add 1 to tm-grid-dati-pnt
initialize tm-grid-dati-ele
(tm-grid-dati-pnt)
modify e-tm-tab,
cursor-x = 1,
cursor-y = tm-grid-dati-pnt + 1
perform z-aggiungi-riga-tm-tab-ep
move tm-grid-dati-pnt to k-rg
perform x-modify-riga-tm-tab
end-if
end-if
.
Spiegazione delle singole parti
a) Non consento l' inserimento della riga se l' utente non è abilitato all' inserimento
**---------------------------------------------------------------**
** Aggiungo una riga alla griglia: 'tm-tab'
**---------------------------------------------------------------**
z-aggiungi-riga-tm-tab.
if w-abi-ins = 'N'
move m-no-abi-inserimento to wb-msg
perform vbx-msg-error
b) Altrimenti controllo il contenuto della cella identificata come "Controllo se posso aggiungere la riga". Se tale cella non è vuota, posso procedere con l' aggiunta della nuova riga.
else
inquire e-tm-tab
(tm-grid-dati-pnt + 1, gcn-w-ctr-add),
cell-data in w-cell-data
if w-cell-data <> ' '
c) Inserisco la riga nella griglia:
modify e-tm-tab,
insertion-index = tm-grid-dati-pnt + 2,
insert-rows = 1
d) Aggiungo un elemento alla tabella di working e lo inizializzo:
add 1 to tm-grid-dati-pnt
initialize tm-grid-dati-ele
(tm-grid-dati-pnt)
e) Mi posiziono sulla prima cella della nuova riga:
modify e-tm-tab,
cursor-x = 1,
cursor-y = tm-grid-dati-pnt + 1
f) Se è stato richiesto nella definizione della griglia, richiedo un entry-point:
perform z-aggiungi-riga-tm-tab-ep
g) Visualizzo la riga eventualmente modificata nell'entry-point:
move tm-grid-dati-pnt to k-rg
perform x-modify-riga-tm-tab
end-if
end-if