Screen object sample code

From m204wiki
Revision as of 20:48, 24 August 2010 by Alan (talk | contribs) (Created page with "'''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 init...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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 many of the Screen and ScreenField methods.

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 


References

The Janus SOAP manual in PDF format: http://sirius-software.com/maint/download/jansoapr.pdf

The Screenfield class page on the Sirius Wiki.

Screen Object Sample Code

How to use Model 6, or Dynamically Sized screens in Model 204.

Conventions and terminology used in Sirius Software technical documentation.