Screen object sample code: Difference between revisions
mNo edit summary |
mNo edit summary |
||
| Line 1: | Line 1: | ||
'''Screen class and Screenfield class example code''' | '''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 | 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 classes|Screen]] and [[ScreenField class|ScreenField]] classes. | ||
<pre> | <pre> | ||
Revision as of 19:56, 7 April 2011
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 %r
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
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.
References
The Janus SOAP manual in PDF format: http://sirius-software.com/maint/download/jansoapr.pdf
The Screen class page on the Sirius Wiki.
The Screenfield class page on the Sirius Wiki.
How to use Model 6, or Dynamically Sized screens in Model 204.
Documentation conventions and terminology used in Sirius Software technical documentation.