User's Guide


Printing the contents of a list

This example shows a simple way to print the contents of a list. It first saves the contents of the list to a file that the user selected and then uses a program starter to launch the OS/2 print command for the file. If you wish to print directly from VisualAge, refer to IBM Smalltalk Programmer's Reference.

Begin by creating a new visual part. Add a single-selection list and a button labeled Print. You can populate the list in any fashion. Add AbtProgramStarterApp as a prerequisite, then switch to the Script Editor and create the following script:

printListContents
  " Prints the contents of a list by writing each element to a new
    line in a file and launching the OS/2 print command "
  | dialog aList file fileStream aProgramStarter |
  " Allow the user to specify the output file from which we will
    later print "
  dialog := CwFileSelectionPrompter new initialize;
                      title: 'Save As';
                      searchMask: '*.*'.
  file := dialog prompt.
  " File is nil if the user selected cancel "
  (file = nil)
  ifFalse:
      [
      " The user clicked on OK - assume the file is valid "
      " Open the file for output      "
      fileStream := CfsWriteFileStream openEmpty: file.
      " Write each element of the list to the file "
      aList := (self subpartNamed: 'List1') items.
      aList do: [: each |
          fileStream nextPutAll: each; cr.].
      fileStream close.
      " Create a VisualAge Program Starter "
      aProgramStarter := AbtProgramStarter new.
      " Launch CMD.EXE to do the printing "
      aProgramStarter
          programName: 'cmd.exe';
          programInput: '/c print ', file;
          startProgram.
      " Discard the VisualAge Program Starter "
      aProgramStarter destroyPart.
      ]


[ Top of Page | Previous Page | Next Page | Table of Contents | Index ]