Screen object sample code: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
m typo |
||
| (25 intermediate revisions by 8 users not shown) | |||
| Line 1: | Line 1: | ||
'''Screen class and Screenfield class example code''' | '''Screen class and Screenfield class example code''' | ||
R SCRNSTBL 10000 | The following program defines a screen application that displays and scrolls through a set of records. The records are initially obtained via the <var class="product">Fast/Unload User Language Interface</var> from a <var>Recordset</var> object to a <var>Stringlist</var>, though this is incidental to the main application details which feature multiple methods from the <var>[[Screen classes|Screen]]</var> and <var>[[Screen classes|ScreenField]]</var> classes. | ||
<pre> | |||
R SCRNSTBL 10000 | |||
b | |||
%rs is object recordSet in file tomdb | |||
%ft is object fastUnloadTask | |||
%listi is object stringList | |||
%listo is object stringList | |||
%listr is object stringList | |||
%rc float | |||
%i float | |||
%j float | |||
* obtain the records that will be displayed | %title is string len 255 | ||
%msg is string len 100 | |||
* obtain the records that will be displayed | |||
find records to %rs | |||
end find | |||
%listi = new | |||
%listo = new | |||
%listr = new | |||
text to %listi | |||
FOR EACH RECORD | |||
IF TOTAL PREMIUM EXISTS THEN | |||
PUT FULLNAME AS STRING(24) | |||
PUT STATE AS STRING(24) | |||
PUT '$' | |||
PUT TOTAL PREMIUM AS STRING | |||
PUT '.00' | |||
END IF | |||
OUTPUT | |||
END FOR | |||
end text | |||
%rc = %rs:fastUnload(%listi, %listo, %listr, parameters='NEBUFF=2') | |||
%sscr is object screen | |||
%scrtop is object screenField | |||
%scrfcmd is object screenField | |||
%scrfmsg is object screenField | |||
%scrfPF is object screenField | |||
%sscral is arraylist of object screenField | |||
%sscr = new | |||
%sscral = new | |||
* separately format top three rows and the bottom row | * separately format top three rows and the bottom row | ||
%scrtop = %sscr:addField(row=1, column=1, color=yellow, - | |||
width=%sscr:columns - 1, highlight=none) | |||
%scrtop:value = $center('August Listing', %sscr:columns - 1) | |||
%scrfcmd = %sscr:addField(row=2, column=1, width=%sscr:columns - 1, color=yellow) | |||
%scrfmsg = %sscr:addField(row=3, column=1, width=%sscr:columns - 1, color=yellow) | |||
%scrfcmd:setCursor | |||
%scrfPF = %sscr:addField(row=%sscr:rows, width=%sscr:columns - 2, column=1, - | |||
highlight=reverse, color=white) | |||
%title = 'PF1=Backward PF2=Forward PF3=Quit' | |||
%scrfPF:value = $center(%title, %sscr:columns - 2) | |||
* format the data display rows and store in arraylist | * format the data display rows and store in arraylist | ||
for %i from 1 to %sscr:rows - 5 | for %i from 1 to %sscr:rows - 5 | ||
| Line 63: | Line 67: | ||
%sscral(%i):color = turquoise | %sscral(%i):color = turquoise | ||
end if | end if | ||
end for | |||
* populate the data display arraylist with unloaded data | * populate the data display arraylist with unloaded data | ||
%i = 1 | |||
%j = 0 | |||
repeat forever | |||
for %i from %i to %listo:count | |||
%j = %j + 1 | |||
if %j > %sscral:count then | |||
loop end | |||
end if | |||
%sscral(%j):value = $lowcase(%listo(%i)) | |||
end for | |||
for %j from %j to %sscral:count | |||
%sscral(%j):value = '' | |||
end for | |||
* display screen and process user response | * display screen and process user response | ||
%sscr:read | |||
%scrfmsg:value = '' | |||
jump to (f1, f2, f3) %sscr:actionKey:toNumber | |||
if %sscr:actionKey:toNumber then | |||
%scrfmsg:value = 'Only PF1-PF3 are valid keys' | |||
%scrfmsg:color = red | |||
%scrfmsg:highlight = reverse | |||
else | |||
%scrfmsg:value = 'Enter key pressed' | |||
%scrfmsg:color = white | |||
%scrfmsg:highlight = none | |||
end if | |||
jump to hl | |||
f1: | |||
%i = %i - (%sscral:count * 2) | |||
if %i < 1 then | |||
%i = %listo:count - %sscral:count | |||
if %i < 1 then | |||
%i = 1 | |||
end if | |||
%scrfmsg:value = 'Wrapped...' | |||
%scrfmsg:color = white | %scrfmsg:color = white | ||
%scrfmsg:highlight = none | %scrfmsg:highlight = none | ||
end if | |||
%j = 0 | |||
jump to hl | |||
f2: | |||
if %i >= %listo:count then | |||
%i = 1 | |||
%scrfmsg:value = 'Wrapped...' | |||
%scrfmsg:color = white | |||
%scrfmsg:highlight = none | |||
end if | |||
%j = 0 | |||
jump to hl | |||
f3: | |||
loop end | |||
hl: | |||
end repeat | |||
end | |||
</pre> | |||
The [[ | '''Note:''' The above sample shows many of the <var>Screen</var> and <var>Screenfield</var> class features, coded in a very procedural way. You can also use the <var>Screen</var> class to create your own kind of screen in a fully object-oriented way. See the [[Screen class using object-oriented syntax|example of a locally-written screen class]]. | ||
[[Screen | ==See also== | ||
<ul> | |||
<li>The [[Screen classes|"Screen classes"]] page | |||
How to use [[ | <li>How to use [[Terminal MODEL 6 support|Model 6]], or dynamically sized screens, in <var class="product">Model 204</var> | ||
[[ | <li>[[Notation conventions for methods|Notation conventions]] used in <var class="product">Janus SOAP</var> documentation | ||
</ul> | |||
Latest revision as of 17:05, 20 January 2015
Screen class and Screenfield class example code
The following program defines a screen application that displays and scrolls through a set of records. The records are initially obtained via the Fast/Unload User Language Interface from a Recordset object to a Stringlist, though this is incidental to the main application details which feature multiple methods from the Screen and ScreenField classes.
R SCRNSTBL 10000
b
%rs is object recordSet in file tomdb
%ft is object fastUnloadTask
%listi is object stringList
%listo is object stringList
%listr is object stringList
%rc float
%i float
%j float
%title is string len 255
%msg is string len 100
* obtain the records that will be displayed
find records to %rs
end find
%listi = new
%listo = new
%listr = new
text to %listi
FOR EACH RECORD
IF TOTAL PREMIUM EXISTS THEN
PUT FULLNAME AS STRING(24)
PUT STATE AS STRING(24)
PUT '$'
PUT TOTAL PREMIUM AS STRING
PUT '.00'
END IF
OUTPUT
END FOR
end text
%rc = %rs:fastUnload(%listi, %listo, %listr, parameters='NEBUFF=2')
%sscr is object screen
%scrtop is object screenField
%scrfcmd is object screenField
%scrfmsg is object screenField
%scrfPF is object screenField
%sscral is arraylist of object screenField
%sscr = new
%sscral = new
* separately format top three rows and the bottom row
%scrtop = %sscr:addField(row=1, column=1, color=yellow, -
width=%sscr:columns - 1, highlight=none)
%scrtop:value = $center('August Listing', %sscr:columns - 1)
%scrfcmd = %sscr:addField(row=2, column=1, width=%sscr:columns - 1, color=yellow)
%scrfmsg = %sscr:addField(row=3, column=1, width=%sscr:columns - 1, color=yellow)
%scrfcmd:setCursor
%scrfPF = %sscr:addField(row=%sscr:rows, width=%sscr:columns - 2, column=1, -
highlight=reverse, color=white)
%title = 'PF1=Backward PF2=Forward PF3=Quit'
%scrfPF:value = $center(%title, %sscr:columns - 2)
* format the data display rows and store in arraylist
for %i from 1 to %sscr:rows - 5
%sscral:add(%sscr:addField(row=%i + 3, column=1, width=%sscr:columns - 1, color=green))
if $mod(%i - 1, 5) = 0 then
%sscral(%i):highlight = underline
%sscral(%i):color = turquoise
end if
end for
* populate the data display arraylist with unloaded data
%i = 1
%j = 0
repeat forever
for %i from %i to %listo:count
%j = %j + 1
if %j > %sscral:count then
loop end
end if
%sscral(%j):value = $lowcase(%listo(%i))
end for
for %j from %j to %sscral:count
%sscral(%j):value = ''
end for
* display screen and process user response
%sscr:read
%scrfmsg:value = ''
jump to (f1, f2, f3) %sscr:actionKey:toNumber
if %sscr:actionKey:toNumber then
%scrfmsg:value = 'Only PF1-PF3 are valid keys'
%scrfmsg:color = red
%scrfmsg:highlight = reverse
else
%scrfmsg:value = 'Enter key pressed'
%scrfmsg:color = white
%scrfmsg:highlight = none
end if
jump to hl
f1:
%i = %i - (%sscral:count * 2)
if %i < 1 then
%i = %listo:count - %sscral:count
if %i < 1 then
%i = 1
end if
%scrfmsg:value = 'Wrapped...'
%scrfmsg:color = white
%scrfmsg:highlight = none
end if
%j = 0
jump to hl
f2:
if %i >= %listo:count then
%i = 1
%scrfmsg:value = 'Wrapped...'
%scrfmsg:color = white
%scrfmsg:highlight = none
end if
%j = 0
jump to hl
f3:
loop end
hl:
end repeat
end
Note: The above sample shows many of the Screen and Screenfield class features, coded in a very procedural way. You can also use the Screen class to create your own kind of screen in a fully object-oriented way. See the example of a locally-written screen class.
See also
- The "Screen classes" page
- How to use Model 6, or dynamically sized screens, in Model 204
- Notation conventions used in Janus SOAP documentation