|
The Scroll Bar demo
This demo is to show the scroll bar as a way to navigate through a subfile, allowing paging, jumping, or inching through your subfile.
Also shown is the use of a mouseable checkbox.
|
DSPF for the Scroll Bar demo
****************************************************************
* ___ _ _ __ __ _ _ *
* | . > ___ ___ _| |_ | |_ | \ \ ___ _ _ _| |_ <_>._ _ *
* | . \/ . \/ . \ | | | . | | |<_> || '_> | | | || ' | *
* |___/\___/\___/ |_| |_|_| |_|_|_|<___||_| |_| |_||_|_| *
* *
* A display screen for an Ice Cream Demo. *
* (To demo scroll bar and radio button & check box. *
* *
* 3/2013 booth@martinvt.com *
****************************************************************
DSPSIZ(24 80 *DS3)
ERRSFL
CA03
CA05
REF(ICECREAMP)
*****************************************************************
R SFL1 SFL
S1ICAVAIL R B 12 3CHECK(LC) REFFLD(ICAVAIL)
SFLCSRPRG
31 DSPATR(PC) COLOR(WHT)
N31 DSPATR(PR)
S1ICFLAVORR B + 1CHECK(LC) REFFLD(ICFLAVOR)
N31 DSPATR(PR)
31 COLOR(WHT)
S1ICIMAGE R B + 1CHECK(LC) REFFLD(ICIMAGE)
N31 DSPATR(PR)
31 COLOR(WHT)
S1SVAVAIL R H REFFLD(ICAVAIL)
S1SVFLAVORR H REFFLD(ICFLAVOR)
S1SVIMAGE R H REFFLD(ICIMAGE)
*****************************************************************
R S1FMT SFLCTL(SFL1)
SFLPAG(010) SFLSIZ(&SF1RECS)
OVERLAY
N50 SFLDSP SFLDSPCTL
50 SFLCLR
N91 SFLEND(*SCRBAR )
SFLCSRRRN(&SF1RRN)
MOUBTN(*ULD ENTER)
SF1RRN 5S 0H
SF1RECS 5S 0P
2 2' ___ _ _ __ _-
_ _ _ '
COLOR(RED)
3 2' | . > ___ ___ _| |_ | |_ | \ -
\ ___ _ _ _| |_ <_>._ _ '
COLOR(RED)
4 2' | . \/ . \/ . \ | | | . | | -
|<_> || ''_> | | | || '' | '
COLOR(RED)
5 2' |___/\___/\___/ |_| |_|_| |_|_|-
|<___||_| |_| |_||_|_| '
COLOR(RED)
7 53'& Friends '
COLOR(WHT)
1 69DATE
EDTCDE(Y)
2 69TIME
3 69'system i'
4 69USER
POSCSR 1 B 8 3DSPATR(ND PC)
CHBOX1 2Y 0B 9 3MLTCHCFLD COLOR(BLU)
CHOICE(1 &CB01)
CHOICE(2 &CB02)
CHCCTL(1 &CB01CHC)
CHCCTL(2 &CB02CHC)
CB01CHC 1Y 0H
CB02CHC 1Y 0H
CB01 30A P
CB02 30A P
11 2'Avail. Flavors -
image file name -
'
DSPATR(UL) COLOR(TRQ)
*****************************************************************
R S1CMD
LINE77 77 23 2DSPATR(UL)
COLOR(BLU)
24 3'F3=Exit'
COLOR(BLU)
+ 3'F5=Refresh'
COLOR(BLU)
|
The RPG program for the Scroll Bar demo
//***************************************************************
// ___ _ _ __ __ _ _ *
// | . > ___ ___ _| |_ | |_ | \ \ ___ _ _ _| |_ <_>._ _ *
// | . \/ . \/ . \ | | | . | | |<_> || '_> | | | || ' | *
// |___/\___/\___/ |_| |_|_| |_|_|_|<___||_| |_| |_||_|_| *
// *
// A program to demo scroll bar & check box. *
// *
// 3/2013 booth@martinvt.com *
//***************************************************************
H COPYRIGHT('Booth Martin, 2013, All rights reserved.')
H option(*nodebugio) dftactgrp(*no) actgrp(*new)
FICECREAM2Dcf e workstn SFILE(SFL1:SF1RRN)
FICECREAMP uf a e k disk
**--------------------------------------------------------------------*
** DEFINITIONS *
**--------------------------------------------------------------------*
* Working fields.
D wNdx s like(SF1RRN)
D wSvCB01CHC s like(CB01CHC)
* Prototypes.
//====================================================================*
// MAINLINE *
//====================================================================*
/free
exsr FillSFL1;
// Edit the ICECREAMP file.
dou *inkc;
write S1CMD;
exfmt S1FMT;
select;
when *inkc;
exsr ExitPgm;
when *inke;
exsr RefreshSFL1;
other;
exsr UpdateICECREAMP;
endsl;
enddo;
//====================================================================*
// MAINLINE-END *
//====================================================================*
//-------------------------------* Sub-Routine *
// *inzsr() *---------------*
// Initializing sub routine *
//-----------------------------------------------*
begsr *inzsr;
CB01CHC = 0;
CB02CHC = 0;
CB01 = 'Show only available flavors.';
CB02 = 'Allow editing of flavors.';
endsr;
//-------------------------------* Sub-Routine *
// ExitPgm() *---------------*
// end of processing *
//-----------------------------------------------*
begsr ExitPgm;
*inlr = *on;
return;
endsr;
//-------------------------------* Sub-Routine *
// FillSFL1() *---------------*
// Fill the subfile. *
//-----------------------------------------------*
begsr FillSFL1;
*in50 = *on;
clear SFL1;
write S1FMT;
*in50 = *off;
SF1RRN = 0;
if CB02CHC = 1; // protect mode.
*in31 = *on;
else;
*in31 = *off;
endif;
// Fill the subfile:
setll *start ICECREAMP;
read(n) ICECREAMP;
dow not %eof;
if CB01CHC = 0
or (CB01CHC = 1 and ICAVAIL <> ' '); // Show only available items.
if ICAVAIL <> ' ';
S1ICAVAIL = 'Y';
else;
S1ICAVAIL = ' ';
endif;
S1ICIMAGE = ICIMAGE;
S1ICFLAVOR = ICFLAVOR;
S1SVFLAVOR = S1ICFLAVOR; // Save original data.
S1SVAVAIL = S1ICAVAIL;
S1SVIMAGE = S1ICIMAGE;
SF1RRN = SF1RRN + 1;
write SFL1;
endif;
read(n)ICECREAMP;
enddo;
S1ICFLAVOR = *blanks; // Add some blank rows for new records
S1ICAVAIL = *blanks;
S1ICIMAGE = *blanks;
S1SVFLAVOR = S1ICFLAVOR; // Save original data.
S1SVAVAIL = S1ICAVAIL;
S1SVIMAGE = S1ICIMAGE;
for wNdx = 1 to 5;
SF1RRN = SF1RRN + 1;
write SFL1;
endfor;
SF1RECS = SF1RRN;
endsr;
//-------------------------------* Sub-Routine *
// RefreshSFL1() *---------------*
// *
//-----------------------------------------------*
begsr RefreshSFL1;
// ReFill the subfile:
for wNdx = 1 to SF1RECS;
chain wNdx SFL1;
S1ICIMAGE = S1SVIMAGE;
S1ICFLAVOR = S1SVFLAVOR;
if S1SVAVAIL <> ' ';
S1ICAVAIL = 'Y';
else;
S1ICAVAIL = ' ';
endif;
endfor;
endsr;
//-------------------------------* Sub-Routine *
// UpdateICECREAMP() *---------------*
// Update the data file *
//-----------------------------------------------*
begsr UpdateICECREAMP;
for wNdx = 1 to SF1RECS;
chain wNdx SFL1;
select;
when S1ICFLAVOR = ' ' and S1SVFLAVOR <> ' '; // delete a flavor
delete (S1SVFLAVOR) ICECREAMP;
when S1ICFLAVOR <> ' ' and S1SVFLAVOR = ' '; // add a flavor
ICFLAVOR = S1ICFLAVOR;
ICIMAGE = S1ICIMAGE;
if S1ICAVAIL <> ' ';
ICAVAIL = 'Y';
else;
ICAVAIL = ' ';
endif;
write(e) RICECREAMP; // It is possible to try to write a duplicate
// record. Code to deal with that issue is
// beyond the scope of this demo. BE WARNED!!
when (S1SVFLAVOR <> ' ') and
((S1ICFLAVOR <> S1SVFLAVOR)
or (S1ICAVAIL <> S1SVAVAIL)
or (S1ICIMAGE <> S1SVIMAGE)); // update a flavor
chain S1SVFLAVOR ICECREAMP;
ICFLAVOR = S1ICFLAVOR;
ICIMAGE = S1ICIMAGE;
if S1ICAVAIL <> ' ';
ICAVAIL = 'Y';
else;
ICAVAIL = ' ';
endif;
update RICECREAMP %fields(ICFLAVOR: ICAVAIL: ICIMAGE);
other;
endsl;
endfor;
// cmd('RGZPFM FILE(ICECREAMP) KEYFILE(*FILE)': 38);
if wSvCB01CHC <> CB01CHC;
exsr FillSFL1;
wSvCB01CHC = CB01CHC;
endif;
endsr;
|
|
|