nomegrid-* varie spaginamento

Navigation:  Documentazione SCREENS > Files generati > 'NOMEPRG'.PRC > Gestione griglie modo "A" >

nomegrid-* varie spaginamento

Previous pageReturn to chapter overviewNext page

Insieme di routine necessarie nell'ambito dello spaginamento griglia, per il corretto posizionamento sui record del file di transito;

 

Esempio della chiamata alla routine

 

Vengono richiamate da altre routine automatiche.

 

Esempio delle routine

 

     *------------------------------------------------------------------*

     * Restart per chiave non minore

     *------------------------------------------------------------------*

      grid-det-rn-start-not-less.

          perform st-t-grid-det-notmin-chia2

          if not w-verbo-ok

             move gor-r-end-read to gor-r-fl-read

          end-if

          .

     *------------------------------------------------------------------*

     * Restart in avanti

     *------------------------------------------------------------------*

      grid-det-rn-start.

          perform st-t-grid-det-may-chia2

          if not w-verbo-ok

             move gor-r-end-read to gor-r-fl-read

          end-if

          .

     *------------------------------------------------------------------*

     * Restart all'indietro

     *------------------------------------------------------------------*

      grid-det-rp-start-less.

          perform st-t-grid-det-min-chia2

          if not w-verbo-ok

             move gor-r-end-read to gor-r-fl-read

          end-if

          .

     *------------------------------------------------------------------*

     * Restart per chiave identica

     *------------------------------------------------------------------*

      grid-det-rp-start-equal.

          perform st-t-grid-det-equal-chia2

          .

     *------------------------------------------------------------------*

     * Muovo la prima chiave sulla chiave di lettura

     *------------------------------------------------------------------*

      grid-det-rp-fill-key.

          move gor-r-t-key to t-gor-r-chia2

          .

     *------------------------------------------------------------------*

     * Muovo l'ultima chiave sulla chiave di lettura

     *------------------------------------------------------------------*

      grid-det-rp-fill-key-from-b.

          move gor-r-b-key to t-gor-r-chia2

          .

     *------------------------------------------------------------------*

     * Lettura record successivo/precedente

     *------------------------------------------------------------------*

      grid-det-sn-read.

          perform rdnxt-t-grid-det

          .

      grid-det-sp-read.

          perform rdprv-t-grid-det

          .

     *------------------------------------------------------------------*

     * Salvo la chiave del record sulla prima chiave

     *------------------------------------------------------------------*

      grid-det-fill-t-key.

          move t-gor-r-chia2 to gor-r-t-key

          .

     *------------------------------------------------------------------*

     * Salvo la chiave del record sulla ultima chiave

     *------------------------------------------------------------------*

      grid-det-fill-b-key.

          move t-gor-r-chia2 to gor-r-b-key

          .

     *------------------------------------------------------------------*

     * Eseguo una restart in avanti

     *------------------------------------------------------------------*

      grid-det-rst-next.

          move 'E'               to gor-r-end-read

          move gor-r-w-t-size to gor-r-t-size

          move 0                 to gor-r-n-m

          perform grid-det-rn-start

          perform until

             gor-r-n-m     = gor-r-t-size or

             gor-r-fl-read = gor-r-end-read

             perform grid-det-src-next

          end-perform

          move gor-r-n-m to gor-r-t-size

          .

     *------------------------------------------------------------------*

     * Eseguo una restart per chiave non minore

     *------------------------------------------------------------------*

      grid-det-rst-not-less.

          move 'E'               to gor-r-end-read

          move gor-r-w-t-size to gor-r-t-size

          move 0                 to gor-r-n-m

          perform grid-det-rn-start-not-less

          perform until

             gor-r-n-m     = gor-r-t-size or

             gor-r-fl-read = gor-r-end-read

             perform grid-det-src-next

          end-perform

          move gor-r-n-m to gor-r-t-size

          .

     *------------------------------------------------------------------*

     * Eseguo una restart all'indietro

     * Comprende una start all'indietro e una in avanti

     *------------------------------------------------------------------*

      grid-det-rst-previous.

          move 'B'               to gor-r-end-read

          move gor-r-w-t-size to gor-r-t-size

          move 0                 to gor-r-n-m

          perform grid-det-rp-start-less

          perform until

             gor-r-n-m     = gor-r-t-size or

             gor-r-fl-read = gor-r-end-read

             perform grid-det-src-previous

          end-perform

 

          move 'E'               to gor-r-end-read

          move 0                 to gor-r-n-m

          perform grid-det-rp-fill-key

          perform grid-det-rp-start-equal

          if stato = '00'

             perform until

                gor-r-n-m     = gor-r-t-size or

                gor-r-fl-read = gor-r-end-read

                perform grid-det-src-next

             end-perform

          end-if

          move gor-r-n-m to gor-r-t-size

          .

     *------------------------------------------------------------------*

     * Ricerca del record successivo

     *------------------------------------------------------------------*

      grid-det-src-next.

          perform grid-det-sn-read

          if stato = '10' or stato = '46'

             move gor-r-end-read to gor-r-fl-read

          end-if

 

          perform grid-det-controlli-read

 

          if gor-r-fl-read <> gor-r-end-read

             perform grid-det-controlli-fill

             perform grid-det-fill-b-key

             if gor-r-n-m = 1 and

                gor-r-fl-fill <> 'N'

                perform grid-det-fill-t-key

             end-if

          end-if

          .

     *------------------------------------------------------------------*

     * Ricerca del record precedente

     *------------------------------------------------------------------*

      grid-det-src-previous.

          perform grid-det-sp-read

          if stato = '10' or stato = '46'

             move gor-r-end-read to gor-r-fl-read

          end-if

 

          perform grid-det-controlli-read

 

          if gor-r-fl-read <> gor-r-end-read

             perform grid-det-controlli-fill

             perform grid-det-fill-t-key

             if gor-r-n-m = 1 and

                gor-r-fl-fill <> 'N'

                perform grid-det-fill-b-key

             end-if

          end-if

          .

     *------------------------------------------------------------------*

     * Scroll in basso di una riga

     *------------------------------------------------------------------*

      grid-det-pg-after-giu.

          move gor-r-t-key to gor-r-t-key-dep

          perform grid-det-rp-fill-key

          perform grid-det-rst-next

 

          if gor-r-n-m < gor-r-t-length

             move gor-r-t-key-dep to gor-r-t-key

             perform grid-det-rp-fill-key

             move ' ' to gor-r-fl-read

             perform grid-det-rst-not-less

          end-if

          .

     *------------------------------------------------------------------*

     * Scroll in alto di una riga

     *------------------------------------------------------------------*

      grid-det-pg-after-su.

          move gor-r-b-key to gor-r-b-key-dep

          perform grid-det-rp-fill-key-from-b

          perform grid-det-rst-previous

 

          if gor-r-n-m < gor-r-t-length

             move gor-r-b-key-dep to gor-r-b-key

             perform grid-det-rp-fill-key-from-b

             move ' ' to gor-r-fl-read

             perform grid-det-rst-previous

          end-if

          .

     *------------------------------------------------------------------*

     * Scroll in basso di una pagina intera

     *------------------------------------------------------------------*

      grid-det-pg-after-pg-dwn.

          perform grid-det-rp-fill-key-from-b

          perform grid-det-rst-next

 

          if gor-r-n-m = 0

             perform grid-det-rp-fill-key

             move ' ' to gor-r-fl-read

             perform grid-det-rst-not-less

          end-if

          .

     *------------------------------------------------------------------*

     * Scroll in alto di una pagina intera

     *------------------------------------------------------------------*

      grid-det-pg-after-pg-up.

          perform grid-det-rp-fill-key

          perform grid-det-rst-previous

 

          if gor-r-n-m = 0

             perform grid-det-rp-fill-key-from-b

             move ' ' to gor-r-fl-read

             perform grid-det-rst-previous

          end-if

          .

     *------------------------------------------------------------------*

     * Reload della pagina corrente

     *------------------------------------------------------------------*

      grid-det-pg-reload.

          move gor-r-t-key to gor-r-t-key-dep

          perform grid-det-rp-fill-key

          initialize gor-r-fl-read

          perform grid-det-rst-not-less

          .

     *------------------------------------------------------------------*

     * Gestione eventi su griglia: grid-det

     *------------------------------------------------------------------*

      z-99-processa-event-grid-det.

          evaluate event-type

           when msg-begin-entry

             evaluate w-grid-entry-reason

              when x'00'

                move 'DBLCLICK' to w-grid-entry-reason

              when x'0D'

                move 'ENTER'    to w-grid-entry-reason

             end-evaluate

           when msg-paged-prev

             if gor-r-fl-read = 'B' or

               (gor-r-fl-read = 'E' and

                gor-r-n-m = 0)

                continue

              else

                modify e-grid-det, event null

                perform grid-det-pg-after-su

                perform z-costruisci-grid-det

                perform z-operazioni-acc-grid-det

                modify e-grid-det, event z-99-event-grid-det

             end-if

           when msg-paged-next

             if gor-r-fl-read = 'E'

                continue

              else

                modify e-grid-det, event null

                perform grid-det-pg-after-giu

                perform z-costruisci-grid-det

                if i > gor-r-n-m

                   move gor-r-n-m        to i

                   modify e-grid-det, cursor-y = i + 1

                end-if

                perform z-operazioni-acc-grid-det

                modify e-grid-det, event z-99-event-grid-det

             end-if

           when msg-paged-nextpage

             if gor-r-fl-read <> 'E'

                set event-action  to event-action-terminate

                modify e-grid-det, event null

 

                perform grid-det-pg-after-pg-dwn

                perform z-costruisci-grid-det

                if i > gor-r-n-m

                   move gor-r-n-m        to i

                   modify e-grid-det, cursor-y = i + 1

                end-if

                perform z-operazioni-acc-grid-det

                modify e-grid-det, event z-99-event-grid-det

             end-if

           when msg-paged-prevpage

             if gor-r-fl-read = 'B' or

               (gor-r-fl-read = 'E' and

                gor-r-n-m = 0)

                continue

              else

                set event-action  to event-action-terminate

                modify e-grid-det, event null

 

                perform grid-det-pg-after-pg-up

                perform z-costruisci-grid-det

                perform z-operazioni-acc-grid-det

 

                modify e-grid-det, event z-99-event-grid-det

             end-if

 

           when msg-heading-dblclick

             if event-data-2 = 1

                move 'S' to w-grid-det-ord-reset

                if gor-r-pnt     = 1 and

                   gor-r-col (1) = event-data-1

                   move k-pmg-ord-aggiungi-des to funzio

                 else

                   move k-pmg-ord-aggiungi-asc to funzio

                end-if

                modify e-grid-det,

                   cursor-x = event-data-1,

                   x        = event-data-1

                perform z-grid-det-ord-aggiungi

                perform z-grid-det-riordina

                if gor-r-ok = 'S'

                   set event-action to event-action-terminate

                   modify e-grid-det, event null

 

                   perform z-grid-det-carica-tab

 

                   modify e-grid-det, event z-99-event-grid-det

                end-if

             end-if

 

           when other

             perform z-operazioni-acc-grid-det

          end-evaluate

          .

     *------------------------------------------------------------------*

     * 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

          .