home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: Product / Product.zip / visdevin.zip / FTD1OAD4.INF (.txt) < prev    next >
OS/2 Help File  |  1994-07-12  |  326KB  |  2,663 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Notices ΓòÉΓòÉΓòÉ
  3.  
  4. References in this publication to IBM products, programs, or services do not 
  5. imply that IBM intends to make these available in all countries in which IBM 
  6. operates. Any reference to an IBM product, program, or service is not intended 
  7. to state or imply that only IBM's product, program, or service may be used. Any 
  8. functionally equivalent product, program, or service that does not infringe any 
  9. of IBM's intellectual property rights may be used instead of the IBM product, 
  10. program, or service. Evaluation and verification of operation in conjunction 
  11. with other products, except those expressly designated by IBM, is the user's 
  12. responsibility. 
  13.  
  14. IBM may have patents or pending patent applications covering subject matter in 
  15. this document. The furnishing of this document does not give you any license to 
  16. these patents. You can send license inquiries, in writing, to: 
  17.  
  18. IBM Corporation
  19. IBM Director of Licensing
  20. 208 Harbor Drive
  21. Stamford, Connecticut 06904-2501
  22. U.S.A.
  23.  
  24. This publication contains examples of data and screens used in daily business 
  25. operations. They are intended only to be illustrative of the type of functions 
  26. available in IBM Visualizer Development and may contain the names of 
  27. individuals, companies, brands, and products. All of these names are 
  28. fictitious, and any similarity to the names and addresses used by an actual 
  29. business enterprise is entirely coincidental. Screens shown in this publication 
  30. are intended to be examples and may not be exact representations of actual 
  31. screens. 
  32.  
  33. This publication contains sample programs. Permission is hereby granted to copy 
  34. and store the sample programs into a data processing machine and to use the 
  35. stored copies for internal study and instruction only. No permission is granted 
  36. to use the sample programs for any other purpose. 
  37.  
  38.  
  39. ΓòÉΓòÉΓòÉ 1.1. Trademarks ΓòÉΓòÉΓòÉ
  40.  
  41. The following terms, denoted by an asterisk (*), used in this publication, are 
  42. trademarks or service marks of IBM Corporation in the United States of America 
  43. or other countries: 
  44.  
  45. Common User Access                                OS/2 
  46. CUA                                               Presentation Manager 
  47. DB2/2                                             SAA 
  48. Systems Application Architecture                  Ultimedia 
  49.  
  50. The following terms, denoted by a double asterisk (**), used in this 
  51. publication, are trademarks of the following companies: 
  52.  
  53. dBASE lll                                         Borland International, Inc. 
  54. 80386                                             Intel 
  55. 80486                                             Intel 
  56. Lotus                                             Lotus Development Corporation 
  57. Windows                                           Microsoft Corporation 
  58.  
  59.  
  60. ΓòÉΓòÉΓòÉ 1.2. About this book ΓòÉΓòÉΓòÉ
  61.  
  62. This book introduces IBM Visualizer Development for OS/2 with information on 
  63. its components, and the types of menu, window and their components that it 
  64. supports. It also contains a step-by-step guide to building the interface to, 
  65. and automatically generating the code for a simple application. 
  66.  
  67. Visualizer Development for OS/2 is referred to in this book as Visualizer 
  68. Development. 
  69.  
  70.  
  71. ΓòÉΓòÉΓòÉ 1.3. Who should use this book? ΓòÉΓòÉΓòÉ
  72.  
  73. This book is for programmers who want to develop applications with Visualizer 
  74. Development. The book is also for user interface designers who want to use 
  75. Visualizer Development to produce prototypes of user interfaces. 
  76.  
  77. This book assumes a basic familiarity with OS/2. If your applications or 
  78. prototypes will manipulate Visualizer Query for OS/2 objects, a familiarity 
  79. with Visualizer Query for OS/2 will be helpful. Consult the Visualizer Query 
  80. for OS/2 documentation, starting with IBM Visualizer Query for OS/2: Using, 
  81. SH45-5089. 
  82.  
  83. If your applications or prototypes will manipulate Visualizer Charts, then a 
  84. familiarity with Visualizer Charts for OS/2 will be helpful. Visualizer Charts 
  85. is referred to in this book as Charts. Consult the Charts documentation, 
  86. starting with IBM Visualizer Charts for OS/2: Using, SH45-5097. 
  87.  
  88. If you are using Visualizer Development to develop complete applications, any 
  89. previous programming experience will be helpful, though this need not include 
  90. experience with object-oriented programming. If you are only using Visualizer 
  91. Development to produce prototypes of user interfaces, no programming experience 
  92. is necessary. 
  93.  
  94.  
  95. ΓòÉΓòÉΓòÉ 1.3.1. What you need to know ΓòÉΓòÉΓòÉ
  96.  
  97. Before you read this book, you should be familiar with the following: 
  98.  
  99. o The OS/2* 2.1 environment within which you will use Visualizer. 
  100.  
  101. o These OS/2 concepts: 
  102.  
  103.    - Mouse and keyboard use 
  104.    - Objects and folders 
  105.    - Window parts 
  106.    - Online help 
  107.  
  108. To learn about OS/2, do one or more of these: 
  109.  
  110. o Open the Master Help Index for explanations of how to use OS/2. 
  111.  
  112. o Open the Information folder, which is in your OS/2 System folder, to access 
  113.   the Glossary, Command Reference, and Tutorial. 
  114.  
  115. o Refer to OS/2 documentation, such as IBM OS/2 2.1: Using the Operating 
  116.   System. 
  117.  
  118.  
  119. ΓòÉΓòÉΓòÉ 1.3.2. How this book is structured ΓòÉΓòÉΓòÉ
  120.  
  121. This book has the following chapters: 
  122.  
  123. o Installing Visualizer Development, outlines the installation prerequisites, 
  124.   and tells you how to install the product. 
  125.  
  126. o Introducing Visualizer Development, provides a short overview of the product. 
  127.  
  128. o Windows and the graphical interface, describes the types of window, window 
  129.   controls and menus that you can construct with Visualizer Development. 
  130.  
  131. o More about the components, describes the Visualizer Development components in 
  132.   greater detail. 
  133.  
  134. o Building your first application, contains a set of 10 exercises leading to 
  135.   completion of a simple application. 
  136.  
  137.  
  138. ΓòÉΓòÉΓòÉ 1.3.3. How to use this book ΓòÉΓòÉΓòÉ
  139.  
  140. There are two distinct elements in this book: 
  141.  
  142. o Information for you to read-contained in Introducing Visualizer Development, 
  143.   Windows and the graphical interface, and More about the components. 
  144.  
  145.   It is not necessary to read this before you start the exercises. However, it 
  146.   is recommended that you read it sometime, particularly if you are not 
  147.   familiar with Common User Access guidelines on interface design. 
  148.  
  149. o A set of 10 exercises leading to the completion of a simple 
  150.   application-contained in Building your first application. 
  151.  
  152.   This is the most important chapter in the book. It provides an opportunity to 
  153.   learn about Visualizer Development by using it. 
  154.  
  155.   If you prefer, start with this chapter, but make sure first that Visualizer 
  156.   Development is installed correctly. 
  157.  
  158.  
  159. ΓòÉΓòÉΓòÉ 1.3.4. Other sources of information ΓòÉΓòÉΓòÉ
  160.  
  161. Other sources of information on Visualizer Development are: 
  162.  
  163. o IBM Visualizer Development for OS/2: Using, SH45-5095, which tells you how to 
  164.   use the product and contains several worked examples on developing 
  165.   applications 
  166.  
  167. o IBM Visualizer Development for OS/2: Reference, SH45-5096, which documents 
  168.   Application System Language (ASL) in detail 
  169.  
  170. o The online help for the editors 
  171.  
  172. o The online help for ASL 
  173.  
  174. o The samples applications in the Development Samples folder 
  175.  
  176.  
  177. ΓòÉΓòÉΓòÉ 1.3.5. Getting online help ΓòÉΓòÉΓòÉ
  178.  
  179. To get online help when you are using one of the editors, select the Help menu 
  180. or the Help push button. If you have not used OS/2 help before, select Using 
  181. help from any Help menu. 
  182.  
  183. Reference information on ASL objects, functions, and statements is available 
  184. from the edit window of the Program editor. The easiest way to get information 
  185. on a specific language element is to highlight the word in your code, or 
  186. position the text cursor over it, then press F1. Alternatively, you can obtain 
  187. this help by selecting Syntax help from the Help menu. 
  188.  
  189. If you are using another editor to edit a program, use the following OS/2 
  190. command: 
  191.  
  192. C:\OS2\VIEW FTD1OAD2.INF
  193.  
  194. or 
  195.  
  196. C:\OS2\VIEW FTD1OAD2.INF keyword
  197.  
  198. where keyword is an ASL statement or object. 
  199.  
  200.  
  201. ΓòÉΓòÉΓòÉ 1.3.6. Late news ΓòÉΓòÉΓòÉ
  202.  
  203. Information that was not available when this book was published may be found in 
  204. the online book, Extra Information, in the Development Manuals folder. 
  205.  
  206.  
  207. ΓòÉΓòÉΓòÉ 2. Introducing Visualizer Development ΓòÉΓòÉΓòÉ
  208.  
  209. This chapter provides a short overview of Visualizer Development and outlines 
  210. how to use it with other Visualizer products. 
  211.  
  212.  
  213. ΓòÉΓòÉΓòÉ 2.1. About Visualizer Development ΓòÉΓòÉΓòÉ
  214.  
  215. Visualizer Development is a set of application development tools, including an 
  216. object-oriented language, Application System Language (ASL). You can use it to 
  217. design and build applications, extending the database query capabilities of 
  218. Query for OS/2 to your own requirements. Your applications can be run on any 
  219. system containing Query for OS/2. 
  220.  
  221. Visualizer Development applications run under Presentation Manager* and can use 
  222. windows, push buttons, menus, and other graphical window controls. Visualizer 
  223. Development generates code for handling the graphical user interface. You add 
  224. the code for processing the user's data. This means that you can quickly 
  225. produce a prototype of an application and do the programming later. 
  226.  
  227. The components of Visualizer Development are as follows: 
  228.  
  229. Menu editor 
  230.  
  231. Use this to create menus. You can specify mnemonics and shortcut key sequences 
  232. for each menu choice. 
  233.  
  234. Window editor 
  235.  
  236. Use this to create windows. You can put a menu bar on a window and include 
  237. menus previously created with the Menu editor. Standard window controls, such 
  238. as push buttons, the Maximize button, Minimize button, and scroll bars, are 
  239. available. 
  240.  
  241. Program editor 
  242.  
  243. Use this to edit ASL programs. In addition to performing the usual editing 
  244. functions, the Program editor structures the code into blocks, generates code 
  245. for handling the user interface, indents code and capitalizes keywords, and 
  246. checks the syntax. 
  247.  
  248. Make 
  249.  
  250. Use this to maintain a list of the windows, menus, and programs in an 
  251. application and to compile some or all of the items in the list. Using the Make 
  252. facility is optional, but it is useful for large applications. 
  253.  
  254. The ASL interpreter runs the application you created with Visualizer 
  255. Development whenever the application is selected from the desktop. (The ASL 
  256. interpreter is supplied as part of Query for OS/2.) 
  257.  
  258. Applications that you develop, do not need Visualizer Development in order to 
  259. run. You need only have Visualizer Query for OS/2. 
  260.  
  261. Note:   Refer to Windows and the graphical interface, for more information 
  262. about these components. 
  263.  
  264. Visualizer Development has the following features: 
  265.  
  266. o Facilities for building end-user interfaces 
  267.  
  268. o Easy prototyping 
  269.  
  270. o Support for compliance to Common User Access (CUA) guidelines 
  271.  
  272. o Application programming interfaces (APIs) for connection to other Visualizer 
  273.   Query for OS/2 objects such as Chart and Report 
  274.  
  275. o Shared data and common end-user interfaces with hosts and other PS/2* systems 
  276.  
  277. o Support for hosts and other PC connections, including facilities for handling 
  278.   different file types (Lotus**, dBASE III**, Integrated Exchange Format (IXF), 
  279.   and ASCII) 
  280.  
  281. o Ability to link to existing applications written in C to an application end 
  282.   user interface through the Window and Menu facilities 
  283.  
  284. o Ability to link, through SQL, to OS/2. Database Manager, DB2/2* databases or 
  285.   other remote databases 
  286.  
  287. o Ability to link to the OS/2 Help Manager (Information Presentation Facility) 
  288.   to associate online help with your applications 
  289.  
  290. o Ability to link to mail systems that support the simple messaging interface 
  291.   (SMI) functions of the vendor-independent messaging (VIM) specification 
  292.  
  293. o Support for multimedia 
  294.  
  295. The following window is an illustration of an application, created using 
  296. Visualizer Development: 
  297.  
  298.  
  299. ΓòÉΓòÉΓòÉ 2.2. Using Visualizer Development with other parts of the Visualizer family ΓòÉΓòÉΓòÉ
  300.  
  301. You can use Development to create OS/2 Presentation Manager* applications that 
  302. may then be run on any system containing Visualizer Query for OS/2. 
  303. Applications created using Visualizer Development can take advantage of links 
  304. to any of the Visualizer objects, such as Visualizer Report and Visualizer 
  305. Chart. You can also use your applications in a Visualizer Procedure, automating 
  306. your regular tasks. 
  307.  
  308. Visualizer Development provides the powerful programming language Application 
  309. System Language (ASL). ASL is an event-driven high-level language, possessing a 
  310. wide range of built-in functions. It embodies many of the principles of 
  311. object-oriented programming, and was extensively used to develop the facilities 
  312. of the Visualizer product - including the development of Visualizer Development 
  313. itself. It is designed to enable users to build applications that can conform 
  314. to the IBM Common User Access (CUA) and Systems Application Architecture (SAA) 
  315. guidelines with the minimum of effort. 
  316.  
  317. There are two distinct sets of tasks you can perform with Development: 
  318.  
  319. o Creating the end user interface, or prototyping 
  320. o Creating program code which actually does the processing 
  321.  
  322. When you choose to prototype, you can build an application in separate, though 
  323. related, stages. You can generate code from a WYSIWIG interface, with which you 
  324. design the interface by selecting controls from a palette, and then the code is 
  325. generated automatically for you. 
  326.  
  327. Development contains a debugger sample application which you can use to debug 
  328. any application you are writing. You can use the debugger application to: 
  329.  
  330. o Walk through your compiled ASL application 
  331. o Set break points in the executing ASL application 
  332. o Query and modify any variables and objects in the application 
  333. o Display the data and objects that are active in the current application. 
  334.  
  335.  
  336. ΓòÉΓòÉΓòÉ 2.3. Using Visualizer Development with other Visualizer products ΓòÉΓòÉΓòÉ
  337.  
  338. This short section lists the prerequisites for using Visualizer Development 
  339. with other products in the Visualizer range. They are: 
  340.  
  341. o To use Visualizer Development, you need to have Query for OS/2 installed. 
  342.  
  343. o To use Visualizer Charts with Visualizer Development, you need to have 
  344.   Visualizer Charts installed. 
  345.  
  346. o To run an application that you develop with Visualizer Development, your 
  347.   end-users need to have Query for OS/2 installed. If your application uses 
  348.   Visualizer Charts, your end-users also need to have Visualizer Charts 
  349.   installed. 
  350.  
  351. With Query for OS/2 Version 1.1, you can create applications that end-users can 
  352. run without having Query for OS/2 installed. 
  353.  
  354. o If your application uses Visualizer Tables, Visualizer Reports, SQL 
  355.   Statements or Data Browser, your end-users need to have Query for OS/2 
  356.   installed. 
  357.  
  358. o If your application uses Visualizer Charts, your end-users need both 
  359.   Visualizer Charts and Query for OS/2 installed. 
  360.  
  361.  
  362. ΓòÉΓòÉΓòÉ 2.4. What next? ΓòÉΓòÉΓòÉ
  363.  
  364. After you have completed the exercises, you will want to know more about the 
  365. full facilities of Visualizer Development. Read IBM Visualizer Development for 
  366. OS/2: Using, SH45-5095 and IBM Visualizer Development for OS/2: Reference, 
  367. SH45-5096 to see what you can do with Development, and for a complete reference 
  368. to the Application System Language (ASL). 
  369.  
  370.  
  371. ΓòÉΓòÉΓòÉ 3. Windows and the graphical interface ΓòÉΓòÉΓòÉ
  372.  
  373. This chapter is a general introduction to windows and their components within 
  374. the context of Visualizer Development. 
  375.  
  376. The chapter describes the types of menu supported by the Menu editor. It also 
  377. describes the types of window and window controls supported by the Window 
  378. editor. You use these two editors to create a graphical user interface for your 
  379. application. For more information on window controls and designing graphical 
  380. user interfaces, refer to the SAA Common User Access Advanced Interface Design 
  381. Guide, SC34-4290. 
  382.  
  383.  
  384. ΓòÉΓòÉΓòÉ 3.1. Window types ΓòÉΓòÉΓòÉ
  385.  
  386. A window is an area with a border, used for conducting a dialog with the user 
  387. or presenting a view of an object. There are two types of window: primary 
  388. windows and secondary windows. 
  389.  
  390. A primary window appears when a user opens an object, and it is where the main 
  391. interaction between a user and an application takes place. 
  392.  
  393. A secondary window is used to supplement the interaction in the primary window. 
  394. It is used when the application needs to prompt the user for more information 
  395. about a request or to display more information. A secondary window can, for 
  396. example, be used to display online help without obscuring the information in 
  397. the primary window. 
  398.  
  399. A secondary window can be modal or modeless. If a modal window is displayed, 
  400. the user cannot use any of the other application windows until the required 
  401. user action on the modal window is completed. For example, a modal window can 
  402. be used if a user attempts to save a file without a name. In this case, the 
  403. dialog prompts the user for the file name. Modal windows are also used for 
  404. displaying error messages. 
  405.  
  406. If a modeless window is displayed, the user can continue to use other 
  407. application windows. An example of a modeless dialog box is the Find dialog, 
  408. which is used to locate the names of files to be included in a list. A modeless 
  409. window is displayed until the user explicitly closes it. 
  410.  
  411.  
  412. ΓòÉΓòÉΓòÉ 3.2. Standard window components ΓòÉΓòÉΓòÉ
  413.  
  414. Most windows have a title bar, and primary windows often have a menu bar and 
  415. sometimes a tool bar. 
  416.  
  417.  
  418. ΓòÉΓòÉΓòÉ 3.2.1. The title bar ΓòÉΓòÉΓòÉ
  419.  
  420. A title bar is the area at the top of a window that contains the system menu 
  421. symbol, the window title, and, optionally, the Maximize, Minimize, and Restore 
  422. buttons. A window can be moved by dragging its title bar. 
  423.  
  424. The system menu appears when the symbol in the left corner of the title bar is 
  425. selected. It contains choices that affect the window or the view it contains. 
  426. From the system menu, the end user can usually select: 
  427.  
  428. Restore     To return the window to the size it was and the position it was in 
  429.             before the user minimized or maximized the window 
  430.  
  431. Move        To move the window to a different location on the desktop 
  432.  
  433. Size        To change the size of the window 
  434.  
  435. Minimize    To reduce the window to its smallest possible size 
  436.  
  437. Maximize    To enlarge the window to its largest possible size (often full 
  438.             screen) 
  439.  
  440. Close       To remove a window and all of the windows associated with it from 
  441.             the workplace, ending the application 
  442.  
  443. Window list To display a list of open windows and switch to another window 
  444.  
  445.  
  446. ΓòÉΓòÉΓòÉ 3.2.2. Menu bars and menus ΓòÉΓòÉΓòÉ
  447.  
  448. A menu bar is the area below the title bar that contains a list of choices. 
  449. These are the names of menus. When the end user selects a menu-bar choice, the 
  450. associated menu is displayed. The user can then select one of the menu choices. 
  451. Because menus are displayed immediately below the associated menu names, they 
  452. are also known as pull-down menus. 
  453.  
  454. An ellipsis (...) immediately after the name of a menu choice indicates that 
  455. another window will be displayed when that choice is selected before the action 
  456. is completed. For example, a choice labeled Sort... would display a window from 
  457. which the user can specify the order in which items should be sorted. A menu 
  458. choice can be grayed to indicate that it cannot currently be selected. 
  459.  
  460. A mnemonic allows the user to select a menu-bar choice or menu choice by typing 
  461. a character instead of using the mouse. Generally, the first letter of the 
  462. choice is used as the mnemonic. If that letter has already been used, the first 
  463. letter unused as a mnemonic is assigned to the role. The chosen character must 
  464. be unique within the menu bar or menu. The mnemonic is underlined in the menu 
  465. bar or menu. 
  466.  
  467. A shortcut key, also known as an accelerator, is a key or combination of keys 
  468. assigned to a menu choice. Experienced users can select a menu choice by 
  469. pressing the associated shortcut key, even if the menu is not currently 
  470. displayed. A shortcut key consists of an extended function key (such as Ctrl, 
  471. Alt, and Shift), with or without a character key. The shortcut key for a menu 
  472. choice is displayed next to the name of the choice. Shortcut keys must be 
  473. unique within a window. 
  474.  
  475. Most Visualizer Development menu bars contain a menu labeled with the name of 
  476. the class of object that can be manipulated in the window. For example, the 
  477. Program editor contains a Program menu. In your applications, you can use the 
  478. supplied File menu to provide the functions of an object menu. Standard Edit, 
  479. Data, and Help menus are also supplied. These menus are supported specifically 
  480. by the code generator in the Program editor. 
  481.  
  482.  
  483. ΓòÉΓòÉΓòÉ 3.3. Window controls ΓòÉΓòÉΓòÉ
  484.  
  485. This section describes each of the window controls available in Visualizer 
  486. Development. 
  487.  
  488. Text 
  489.  
  490. A text control allows the display of static text on the window, and is normally 
  491. used for labeling and prompts. The words Location, Name, Names, and Locations 
  492. in the picture above are text fields. 
  493.  
  494. Push buttons 
  495.  
  496. A push button is a labeled button that represents an action that will be 
  497. initiated when a user selects it. 
  498.  
  499. Standard push buttons 
  500.  
  501. Standard push buttons provide the following predefined functions: OK, Apply, 
  502. Reset, Cancel, and Help. An additional standard push button is available for a 
  503. user-defined function. 
  504.  
  505. Bitmap buttons 
  506.  
  507. A bitmap button is a button displaying a picture (graphic) that represents an 
  508. action that is initiated when a user selects it: for example, a tool bar 
  509. button. Three bitmap images are supplied. They show the button in the following 
  510. states: 
  511.  
  512. o Up 
  513. o Down 
  514. o Disabled (unavailable). 
  515.  
  516. Radio button 
  517.  
  518. A radio button consists of a circle with text beside it. Radio buttons are 
  519. grouped to show a user a fixed set of choices from which the user can select 
  520. only one. When a radio button is selected, the circle becomes partially filled. 
  521. The Left, Center, and Right alignment buttons in the following illustration are 
  522. radio buttons. 
  523.  
  524. Check box 
  525.  
  526. A check box consists of a square box with associated text that represents a 
  527. choice. When a user selects the choice, a check mark, is shown in the box. The 
  528. user can clear the check box by selecting the choice again. Check boxes are 
  529. typically used in groups. Unlike groups of radio button, however, more than one 
  530. check box can be selected at a time. Check boxes are appropriate for choices 
  531. that have two clearly distinct states. 
  532.  
  533. Value set 
  534.  
  535. Like radio buttons, a value set is used to present mutually exclusive choices. 
  536. However, a value set is used primarily for graphical choices, and the choices 
  537. are arranged in a matrix. 
  538.  
  539. List box 
  540.  
  541. A list box is a rectangular box, usually with a scroll bar. It can be used to 
  542. display a fixed or variable list of settings choices or objects, such as a list 
  543. of the files in a directory. The list box provides for the display of lists of 
  544. tabular data in one or more columns (optionally with column titles). Single, 
  545. multiple, and extended selection techniques are all supported for list boxes. 
  546. Both horizontal and vertical scroll bars are allowed on list boxes. 
  547.  
  548. Single line entry field 
  549.  
  550. A single-line entry (SLE) field provides an area into which the user can enter 
  551. a line of text. An SLE can be made to scroll horizontally automatically to 
  552. allow input of long text strings. The display of the input text can be 
  553. suppressed (for entering passwords). An SLE supports use of the clipboard for 
  554. cutting, copying, and pasting text. Clipboard operations can be used with SLEs. 
  555.  
  556. Multi-line entry field 
  557.  
  558. A multi-line entry (MLE) field is a multiple-line version of the SLE, and 
  559. allows the end user to type large amounts of data from the keyboard. The field 
  560. can be configured to scroll, and can support automatic word wrapping.  An MLE 
  561. supports use of the clipboard for cutting, copying, and pasting text. 
  562.  
  563. Drop-down list 
  564.  
  565. A drop-down list is a variation of a list box. It only displays one item from 
  566. the list until the user clicks on the list button to display the other items. 
  567.  
  568. Drop-down entry A drop-down entry control combines an entry field with a 
  569. drop-down list. The user can scroll through the list to make a selection or 
  570. complete the entry field. 
  571.  
  572. Group box 
  573.  
  574. A group box is a rectangular box drawn around a group of fields to indicate 
  575. that the fields are related and to provide a label for the group. 
  576.  
  577. Graphic area 
  578.  
  579. A graphic area is a rectangular area which can display graphic primitives (such 
  580. as lines, rectangles, and curves). 
  581.  
  582. Scroll bars 
  583.  
  584. A scroll bar indicates to a user that more information is available in a 
  585. particular direction and can be scrolled into view. Scroll bars can be either 
  586. horizontal or vertical, and can be activated on windows, MLEs, and list boxes, 
  587. or added onto windows as additional controls. 
  588.  
  589.  
  590. ΓòÉΓòÉΓòÉ 3.4. Tool bars ΓòÉΓòÉΓòÉ
  591.  
  592. The primary window-the first window you see-in all four Visualizer Development 
  593. editors, displays a row of buttons just under the menu bar. This is called the 
  594. Tool bar. Programs created with Visualizer Development can also add tool bars 
  595. to the windows they open. 
  596.  
  597. Each button bears an icon which represents a regularly used function offered on 
  598. one of the pull down menus. 
  599.  
  600. You obtain the function offered by a Tool bar button by clicking on it with 
  601. mouse button 1. 
  602.  
  603. For more information about the Tool bar buttons, read the Tool bar online help, 
  604. or refer to IBM Visualizer Development for OS/2: Using, SH45-5095. 
  605.  
  606.  
  607. ΓòÉΓòÉΓòÉ 3.4.1. Tool bar online help ΓòÉΓòÉΓòÉ
  608.  
  609. You can get help on the function of any Tool bar button by clicking on it with 
  610. mouse button 2. 
  611.  
  612. This action displays a short pull down menu with two entries on it. The first 
  613. entry offers you the function of the button: the second entry offers you online 
  614. help. 
  615.  
  616. If you choose help, the help panel that is displayed presents a list of all the 
  617. buttons on the Tool bar. Use mouse button 1 to click on the title of the button 
  618. about which you want help. 
  619.  
  620.  
  621. ΓòÉΓòÉΓòÉ 4. More about the components ΓòÉΓòÉΓòÉ
  622.  
  623. This chapter explains the Visualizer Development components in more detail. 
  624. These components are: 
  625.  
  626. o The Visualizer Menu editor 
  627. o The Visualizer Window editor 
  628. o The Visualizer Program editor 
  629. o The Visualizer Make object 
  630. o The Application System Language (ASL). 
  631.  
  632.  
  633. ΓòÉΓòÉΓòÉ 4.1. The Visualizer Menu editor ΓòÉΓòÉΓòÉ
  634.  
  635. This section explains more about the Menu editor. 
  636.  
  637. Your window-based application can have a primary window which the end user uses 
  638. to access the main functions of the application.  A common way to access these 
  639. functions is through menus on a menu bar at the top of the primary window. 
  640.  
  641. You define the menus individually with the Menu editor. By using the Window 
  642. editor, you then add the menus you want to include on the menu bar to your 
  643. primary window. 
  644.  
  645.  
  646. ΓòÉΓòÉΓòÉ 4.1.1. Menu features ΓòÉΓòÉΓòÉ
  647.  
  648. Each menu that you define consists of a menu bar entry and a list of menu 
  649. entries.  The title of the menu appears on the menu bar.  When the end user 
  650. selects the menu title, the menu entries are revealed beneath it. 
  651.  
  652. You can design your application so that there is a menu entry for each of the 
  653. main application functions. For example, the end user might request a display 
  654. of the values in the currently selected table by using a customized menu entry. 
  655.  
  656. In other cases, you may provide a secondary window or set of windows for the 
  657. entry of further details before the function can be performed. For example, 
  658. when an end user wants to import data from a database, the names of the key 
  659. fields must be specified.  A secondary window might be presented for entering 
  660. the search fields. 
  661.  
  662.  
  663. ΓòÉΓòÉΓòÉ 4.1.2. Menu editor functions ΓòÉΓòÉΓòÉ
  664.  
  665. The Menu editor allows you to create menus for menu bars. The menu entries of a 
  666. window are created within the Menu editor while the menus to appear on a menu 
  667. bar are defined in the Window editor. 
  668.  
  669. Menus are stored as separate objects and can be used more than once in an 
  670. application. They can also be used in several applications. 
  671.  
  672. For the title of the menu and the individual menu entries, you can specify the 
  673. following details: 
  674.  
  675. Text      The literal string that is to appear as the menu item on the menu bar 
  676.           or as the menu entry text. 
  677.  
  678. Mnemonic  A short form of entry, normally a single letter from the displayed 
  679.           text is underlined (assigned according to CUA guidelines). 
  680.  
  681. Reference An object name to link menu actions to the program (the internal 
  682.           variable name for the menu or menu entry). 
  683.  
  684. Res id    A resource identifier reference number relating to available help 
  685.           text.  (Help is available for the standard Help menu entry, but you 
  686.           will need to write new help text for your own menus.) 
  687.  
  688. Accelerator (Shortcut key) A key combination that the end user can press to 
  689.           speed the menu selection (Ctrl + K for example). You can have both a 
  690.           mnemonic and a shortcut key if you wish, or just a mnemonic. 
  691.  
  692. Operation Some action will take place when the menu entry is selected by the 
  693.           end user.  The action taken can be specified during the menu creation 
  694.           and code generated automatically to perform the requested operation. 
  695.           The radio buttons indicate what type of action will take place and 
  696.           the location and name of the related object (if any). The operation 
  697.           selection can be left as undefined and the action determined later by 
  698.           re-editing the menu or by placing the code into the program manually 
  699.           during the programming stage (from the Program editor). 
  700.  
  701. Whenever practical, the Menu editor supplies sensible defaults for all input. 
  702.  
  703. Note:   References, shortcut keys, and mnemonics must not be repeated within a 
  704.         menu or within a created menu bar. The Menu editor will protect you 
  705.         from repeating these in an individual menu, but it is up to you to 
  706.         ensure that repetition does not occur in any of your menu bars. 
  707.  
  708.  
  709. ΓòÉΓòÉΓòÉ 4.1.3. Menu editor windows ΓòÉΓòÉΓòÉ
  710.  
  711. The Menu editor consists of a primary window (with menu bar) which displays the 
  712. details of the menu being created, and two secondary windows, for defining the 
  713. menu bar entry and the individual menu entries. 
  714.  
  715. The above illustration shows the Menu editor primary window on which you create 
  716. the menu bar entry and menu entries. 
  717.  
  718. Near the top of the primary window is the literal string that will appear in 
  719. the created menu bar. Listed below the menu bar entry are up to 12 individually 
  720. defined menu entries that make up the menu. The mnemonics and shortcut keys 
  721. associated with each menu entry are also displayed. 
  722.  
  723. A mnemonic defined for a menu bar or menu entry is shown on the Menu editor in 
  724. parentheses. This letter will be underlined when displayed on the final menu. 
  725.  
  726. Note:   Instead of a letter, you can specify a number as a mnemonic to follow 
  727.         the entry text, for example, Open (1). 
  728.  
  729. The above illustration shows the Menu editor secondary window for defining a 
  730. menu bar entry. The above illustration shows the Menu editor secondary window 
  731. for defining an individual menu entry. 
  732.  
  733.  
  734. ΓòÉΓòÉΓòÉ 4.1.4. Standard menu entries in Visualizer Development ΓòÉΓòÉΓòÉ
  735.  
  736. Because menus like File, Edit, Data, and Help occur in many applications, 
  737. pre-constructed standard menus are available for these menu bar entries.  You 
  738. can include them on the menu bar when you are designing the window or you can 
  739. choose to include on the menu bar your own version of these entries that you 
  740. have written with the Menu editor. 
  741.  
  742. The following sections describe these menus in more detail. 
  743.  
  744.  
  745. ΓòÉΓòÉΓòÉ 4.1.4.1. The Data menu ΓòÉΓòÉΓòÉ
  746.  
  747. Data provides a way for the user to select tables for processing by the 
  748. application. 
  749.  
  750. Data gives access to a menu with Select table which causes Program edit to 
  751. generate code for manipulating tables. 
  752.  
  753.  
  754. ΓòÉΓòÉΓòÉ 4.1.4.2. The File menu ΓòÉΓòÉΓòÉ
  755.  
  756. File gives access to a menu with New, Open, Save, Save as and Print. 
  757.  
  758. Selecting Save will save the current version of the object with the same name 
  759. it had when it was opened. If an object has been modified to create a new 
  760. object, the Save as entry allows the object to be saved with a new name and 
  761. location. Not all applications support the saving of a changed object with a 
  762. new name. Visualizer Query for OS/2 objects do not have a Save as choice, 
  763. though they do have Copy to, which performs a similar function. A template file 
  764. will automatically generate a Save as dialog if a template is changed and then 
  765. exited. For objects which support printing or plotting, the Print/plot entry 
  766. will send the object to the default printer. Many applications use the name of 
  767. the application for the menu bar label.  The Menu editor uses Menu to indicate 
  768. the menu which holds the main filing operations. 
  769.  
  770.  
  771. ΓòÉΓòÉΓòÉ 4.1.4.3. The Edit menu ΓòÉΓòÉΓòÉ
  772.  
  773. The Edit menu bar entry gives access to the standard menu selections of Cut, 
  774. Copy and Paste. The one illustrated also has Delete and Insert. Copy is clearly 
  775. not possible if there is nothing selected on the current window for copying. In 
  776. this situation, the Copy option is grayed and the menu item appears in reduced 
  777. contrast. 
  778.  
  779. The Edit functions available may vary depending on the object type or the 
  780. application.  For example, the Visualizer Program editor allows Cut and Paste 
  781. only within the edit windows. The Visualizer Window editor will allow Cut and 
  782. Paste of window controls within the template, but will not allow pasting from 
  783. other applications. 
  784.  
  785.  
  786. ΓòÉΓòÉΓòÉ 4.1.4.4. The Help menu ΓòÉΓòÉΓòÉ
  787.  
  788. A standard Help facility is available for most products. Help is 
  789. context-sensitive and the items covered for each product depend on the nature 
  790. of the product. The entries for the Help menu are: 
  791.  
  792. Help for help  To provide information on how to use the help facility. 
  793.  
  794. Extended help  To provide more detailed help information on the entire window 
  795.                or application. 
  796.  
  797. Keys help      To provide help for the use of special keys and key combinations 
  798.                in the context of the current application. 
  799.  
  800. Help index     To provide a list of topics for which help is available. The 
  801.                help index is context-sensitive and provides information for the 
  802.                current focus on the screen. 
  803.  
  804. Product information To provide the name of the program and its owner. (Not all 
  805.                Help menus have a product information entry). 
  806.  
  807. The Help menu is linked to Information Presentation Facility (a standard 
  808. component of OS/2). Refer to the OS/2 Programmer's Reference for more 
  809. information on how to create and manage help text files. 
  810.  
  811.  
  812. ΓòÉΓòÉΓòÉ 4.2. The Visualizer Window editor ΓòÉΓòÉΓòÉ
  813.  
  814. This section explains more about the Window editor. 
  815.  
  816.  
  817. ΓòÉΓòÉΓòÉ 4.2.1. Window features ΓòÉΓòÉΓòÉ
  818.  
  819. Each window that you design may have a title bar and a border, a system menu 
  820. icon and minimise and maximise buttons with instances from the two basic sets 
  821. of features: 
  822.  
  823. Window attributes These define the overall appearance and behavior of the 
  824.           window. 
  825.  
  826.           You can define the following window attributes: 
  827.  
  828.    o The border of the window can be normal (permitting resizing), dialog, thin 
  829.      line, or omitted. 
  830.  
  831.      Primary windows are normally resizable while secondary windows are not. 
  832.  
  833.    o The title bar can contain a system menu and the maximize and minimize 
  834.      icons (these are normally present on a primary window). 
  835.  
  836.    o When opened, the window can be either hidden or modal.  Modal means that 
  837.      action must be taken on this window, and before any other window in the 
  838.      application can be used, the window is closed. 
  839.  
  840.    o Scroll bars can be placed on the window to permit horizontal and vertical 
  841.      scrolling. 
  842.  
  843. Controls  End users interact with the application through a window by using 
  844.           window controls.  The available controls are: multi line entry, 
  845.           single line entry, drop-down entry, dropdown list, bitmap button, 
  846.           radio button, push button, standard push button, value set, check 
  847.           box, list box, graphic area, group box, text, horizontal scroll, and 
  848.           vertical scroll. 
  849.  
  850.           The end user can also interact with the application via a menu bar 
  851.           with pull-down menus. You can use the Menu editor and the Window 
  852.           editor to define the contents of the menu bar. 
  853.  
  854.  
  855. ΓòÉΓòÉΓòÉ 4.2.2. Window editor functions ΓòÉΓòÉΓòÉ
  856.  
  857. With the Window editor you create and modify windows and dialog windows for use 
  858. in an application, and specify how they can be manipulated. 
  859.  
  860. To create the contents of a window, you select each control from a palette on 
  861. the main window of the editor, and then place it on the Window Template window. 
  862.  
  863. The controls that you can place on your Window Template window are shown in the 
  864. following table. 
  865.  
  866. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  867. Control Area      Can be   Name    Text      Specific
  868.            cloned        attribute    attributes
  869. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  870. Multi line edit    YES    YES    NO       YES
  871. Single line entry   YES    YES    NO       YES
  872. Drop-down entry    NO     YES    NO       YES
  873. Drop-down list     NO     YES    NO       YES
  874. Radio button      YES    YES    YES       NO
  875. Bitmap button     YES    YES    YES       NO
  876. Standard push     YES    YES    NO       YES
  877. Value set       YES    YES    YES       NO
  878. Check box       NO     YES    YES       YES
  879. List box        YES    YES    YES       NO
  880. Graphic area      NO     YES    NO       YES
  881. Group area       NO     YES    NO       YES
  882. Group box       NO     YES    YES       NO
  883. Text          YES    YES    YES       YES
  884. Horizontal scroll   NO     YES    NO       YES
  885. Vertical scroll    NO     YES    NO       YES
  886. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  887.  
  888. This table shows information as follows: 
  889.  
  890. Control type   The name of the control (multi line edit, for example). 
  891.  
  892. Can be cloned  The ability to replicate a control into sets that work together. 
  893.                Radio buttons and push buttons are commonly cloned controls. 
  894.                The cloned push buttons become a clone set and each member of 
  895.                the clone set is identified by the set name and the clone 
  896.                number. 
  897.  
  898. Name           The variable name used by the program for this control or clone 
  899.                set. This is the name used by the program for references to the 
  900.                control. All controls must have a name within the program, even 
  901.                if there is no text associated with them for the end user to 
  902.                read. 
  903.  
  904. Text attribute Whether the control supports the TEXT attribute. This specifies 
  905.                text that the user will see. For example, a push button might 
  906.                have the text Cancel on it. 
  907.  
  908. Specific attributes Whether there are attributes specific to this type of 
  909.                control. All controls have attributes for position, size, and 
  910.                selectable for example, but some controls have additional 
  911.                attributes specific to them. The single line entry (SLE) control 
  912.                has an additional attribute for the horizontal alignment of text 
  913.                within the control's display. A push button does not have this 
  914.                alignment attribute. 
  915.  
  916.  
  917. ΓòÉΓòÉΓòÉ 4.2.3. Window editor windows ΓòÉΓòÉΓòÉ
  918.  
  919. You use the main window of the Window editor to define controls and place them 
  920. on the template window (the window under construction). The following 
  921. illustration shows the main window of the Window editor and the Template 
  922. window. 
  923.  
  924. The main window is divided into two main sections: the Controls Palette and the 
  925. Selected Control.  Use the Controls Palette section to select a control type 
  926. and specify its reference details. (This information will be used later by the 
  927. ASL code.) The Selected Control list contains all controls currently on the 
  928. template window. The Selected Control group provides the details of the 
  929. selected template control. 
  930.  
  931. When you first open the Window editor, the template window is blank. The title 
  932. bar shows Window Template and no window controls are present. 
  933.  
  934.  
  935. ΓòÉΓòÉΓòÉ 4.2.3.1. Window dimensions (DBUs) ΓòÉΓòÉΓòÉ
  936.  
  937. The area of the template window initially measures approximately 270 units 
  938. across by 110 high, in dialog box units (DBU). The window can be resized 
  939. whenever the normal border is still present (the template in the following 
  940. illustration has been resized to 173 by 66). 
  941.  
  942.  A DBU is approximately related to character size as follows: 
  943.  
  944. o 4 DBU = 1 horizontal character (width) 
  945. o 8 DBU = 1 vertical character (height) 
  946. The grid, which can be displayed on the template window, is marked off in 
  947. multiples of 4 DBU horizontally and 3 DBU vertically. 
  948.  
  949.  
  950. ΓòÉΓòÉΓòÉ 4.3. The Visualizer Program editor ΓòÉΓòÉΓòÉ
  951.  
  952. This section explains more about the Program editor. 
  953.  
  954. Use the Program editor to generate, add and modify Application System Language 
  955. (ASL) code in the following ways: 
  956.  
  957. o Link end-user activity to the windows and menus you have created 
  958.  
  959. o Link your windows and menus to the logical functions that your application 
  960.   performs 
  961.  
  962.  
  963. ΓòÉΓòÉΓòÉ 4.3.1. Program features ΓòÉΓòÉΓòÉ
  964.  
  965. You can write and edit the code for your application with any editor that can 
  966. work with ASCII files. If, however, you use the Window and Menu editors to 
  967. design your windows and menus, you can then use the Program editor to generate 
  968. skeleton source code for the controls, menu bar entries, and all their 
  969. characteristics automatically. 
  970.  
  971. Then, you have only to edit the created blocks of code to include the logic 
  972. that reacts to each potential end-user interaction. The Program editor also 
  973. provides syntax checking, code formatting, and contextual syntax help to aid 
  974. you with program creation. 
  975.  
  976. If you use an ordinary text editor, the file attributes may not be set 
  977. correctly. If this happens, you can use the sample application, Classer to 
  978. restore the correct file attributes. 
  979.  
  980.  
  981. ΓòÉΓòÉΓòÉ 4.3.2. Program editor functions ΓòÉΓòÉΓòÉ
  982.  
  983. ASL is an event-driven language. An ASL coded program is structured in blocks 
  984. so that a block handles an event. 
  985.  
  986. You can select various event blocks for the program you are writing. (When you 
  987. use Create, template code for each of the events is generated for you.) 
  988.  
  989. From within these event blocks, you can also call procedures, which are 
  990. themselves blocks of code.  A procedure block contains discrete code for any 
  991. processing that you want performed for a defined action. 
  992.  
  993. The Program editor recognizes and manipulates code at block level, and 
  994. therefore simplifies navigation through the program structure. 
  995.  
  996. You can write code blocks yourself using the Program editor. When you create 
  997. code this way, the editor recognizes the events and procedures you have written 
  998. and separates them out as required. 
  999.  
  1000. Syntax help is available for the ASL language from any point on an edit window. 
  1001.  
  1002.  
  1003. ΓòÉΓòÉΓòÉ 4.3.3. Program editor window ΓòÉΓòÉΓòÉ
  1004.  
  1005. The Program editor has a primary window (with a menu bar and a tool bar) which 
  1006. displays lists of Events and Procedures. It is shown in the following 
  1007. illustration. 
  1008.  
  1009.  
  1010. ΓòÉΓòÉΓòÉ 4.4. The Visualizer Make object ΓòÉΓòÉΓòÉ
  1011.  
  1012. This section explains more about Make object. 
  1013.  
  1014. You can use the Make to manage the programs, windows, and menus that you have 
  1015. designed for an application. You can also use Make to compile selected files 
  1016. from your library (when creating an application in stages). 
  1017.  
  1018. With Visualizer Development, you build the components of an application-the 
  1019. programs, windows, and menus-separately, using the editors. 
  1020.  
  1021. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1022. ΓöéMenu  Γö£ΓöÇΓöÇΓöéMenu  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1023. Γöé EditorΓöé  Γöé  File Γöécompile     Γöé
  1024. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ  ΓööΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÿ         Γöé
  1025.                    
  1026. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1027. ΓöéWindow Γö£ΓöÇΓöÇΓöéWindow Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöé Final    Γöé
  1028. Γöé EditorΓöé  Γöé  File Γöécompile  Γöé       Γöé
  1029. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ     Γöé Compiled   Γöé
  1030. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ     Γöé       Γöé
  1031. ΓöéProgramΓö£ΓöÇΓöÇΓöéProgramΓö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöé Application Γöé
  1032. ΓöéEditor Γöé  Γöé File  Γöécompile  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1033. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1034.  
  1035. Simple applications with a single window and program are easily built using the 
  1036. Window and Program editors, each of which allows direct compilation into the 
  1037. final application as shown in the diagram above. 
  1038.  
  1039. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1040. ΓöéMenu  Γö£ΓöÇΓöÇΓöéMenu  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1041. Γöé EditorΓöé  Γöé  File Γöé     Γöé
  1042. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ     Γöé
  1043. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ     Γöé
  1044. ΓöéWindow Γö£ΓöÇΓöÇΓöéWindow Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé
  1045. Γöé EditorΓö£ΓöÉ  Γöé  File Γöé    Γöé Γöé
  1046. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿΓöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ    Γöé Γöé
  1047.      Γöé  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ    Γöé Γöé
  1048.      ΓööΓöÇΓöéWindow Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ Γöé Γöé
  1049.       Γöé  File Γöé   Γöé Γöé Γöé
  1050.       ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ   Γöé Γöé Γöé
  1051. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ   Γöé Γöé Γöé
  1052. ΓöéProgramΓö£ΓöÇΓöÇΓöéProgramΓö£ΓöÇΓöÇΓöÇΓöÉ Γöé Γöé Γöé
  1053. Γöé EditorΓö£ΓöÉ  Γöé  File Γöé  Γöé Γöé Γöé Γöé
  1054. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿΓöé  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ  Γöé Γöé Γöé Γöé
  1055.      Γöé  ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  Γöé Γöé Γöé Γöé   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1056.      ΓööΓöÇΓöéProgramΓö£ΓöÇΓöÉ Γöé Γöé Γöé Γöé   Γöé Final    Γöé
  1057.       Γöé  File Γöé Γöé Γöé Γöé Γöé Γöé   Γöé Application Γöé
  1058.       ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ        Γöé (compiled  Γöé
  1059. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ       ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ  Γöé from Make  Γöé
  1060. ΓöéMenu  Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöé Make  Γö£ΓöÇΓöÇΓöé or object  Γöé
  1061. Γöé EditorΓöé       Γöé  File Γöé  Γöé Editors)   Γöé
  1062. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ       ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ  ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1063.  
  1064. More complex applications may require many programs and windows. Make file 
  1065. simplifies these applications by providing a list of all components included in 
  1066. your application, and giving the ability to compile source files selectively. 
  1067.  
  1068. You can use Make to manage and compile applications itself, or you can create 
  1069. Make files for use by the Create options of the Program editor. 
  1070.  
  1071. When you compile the contents of a Make file, the ASL code in your programs is 
  1072. linked to the references associated with each control, the menu selections, and 
  1073. other interactions with your created windows. 
  1074.  
  1075.  
  1076. ΓòÉΓòÉΓòÉ 4.4.1. Make features and windows ΓòÉΓòÉΓòÉ
  1077.  
  1078. Make consists of a primary window with menu bar, which displays a list of the 
  1079. source program, window, and menu objects selected for inclusion in an 
  1080. application. 
  1081.  
  1082. The following illustration shows the Make primary window listing the objects in 
  1083. an application. 
  1084.  
  1085. Two secondary windows are displayed when you select one of the "add object 
  1086. class" entries from the Edit pull-down. On one window are displayed the 
  1087. available objects from selected locations, and you can select the ones you 
  1088. want. On the other window is a list of the objects that you have already 
  1089. selected. 
  1090.  
  1091. The following illustration shows the Make secondary windows for listing and 
  1092. selecting programs for inclusion in a Make file. 
  1093.  
  1094. The selected objects are added to the Make file when you select OK. 
  1095.  
  1096. Alternatively, program, window and menu objects can be added to a Makeby 
  1097. dragging their respective icons and dropping them onto the main Make window. 
  1098.  
  1099.  
  1100. ΓòÉΓòÉΓòÉ 4.5. Useful drag and drop combinations ΓòÉΓòÉΓòÉ
  1101.  
  1102. This section lists the Visualizer objects and types of file that can be dragged 
  1103. and dropped on to other Visualizer objects. 
  1104.  
  1105. This            Accepts 
  1106.  
  1107. Make            All (Programs, Menus and Windows) 
  1108.  
  1109. Menu item       Program and Window 
  1110.  
  1111. Window          Menus and Bitmaps 
  1112.  
  1113. Program         Window and Make 
  1114.  
  1115. Program block   Windows, applications and other objects 
  1116.  
  1117.                 Examples from Visualizer Query for OS/2 include Visualizer 
  1118.                 Tables, Reports and SQL tables. You can also drag and drop 
  1119.                 charts from Visualizer Charts. 
  1120.  
  1121.                 Other examples include digital video files, digital audio files 
  1122.                 and MIDI files. 
  1123.  
  1124.  
  1125. ΓòÉΓòÉΓòÉ 4.6. The Application System Language ΓòÉΓòÉΓòÉ
  1126.  
  1127. This section describes more about the Application System Language (ASL). For 
  1128. more information on particular statements, functions, and objects, refer to IBM 
  1129. Visualizer Development for OS/2: Reference, SH45-5096 and IBM Visualizer 
  1130. Development for OS/2: Using, SH45-5095. 
  1131.  
  1132.  
  1133. ΓòÉΓòÉΓòÉ 4.6.1. Programs and applications ΓòÉΓòÉΓòÉ
  1134.  
  1135. ASL programs are made up of blocks containing code. The functional blocks in a 
  1136. program are either blocks which handle events, or they are procedures. There is 
  1137. no defined order in which blocks need be placed in a program. 
  1138.  
  1139. The event blocks contain code to process events from the user or a program. 
  1140. Procedure blocks contain additional code, for example for performing 
  1141. calculations. Procedures blocks are activated either by a call from an event 
  1142. block or from another procedure. 
  1143.  
  1144. Event-driven programming may require some adjustment if you are used to 
  1145. conventional programming, but the differences are easily learned. The main use 
  1146. of events is to react to the user selecting a control (such as a menu choice) 
  1147. from one of the program's windows. Each program also has an ON START event 
  1148. block, which executes when the program is first started. 
  1149.  
  1150. The term application denotes the compiled output from Visualizer Development. 
  1151. It is the result of a compiling one or more component files which can be 
  1152. programs, menus and windows. Applications are fully integrated programs. You 
  1153. can run them on any system with Visualizer Query for OS/2: Visualizer 
  1154. Development does not need to be installed. 
  1155.  
  1156. An application is stored in an application objectstore, which is an OS/2 file. 
  1157. A compiled program in an application objectstore is known as a module, and an 
  1158. active module is known as a task. There can be several programs in an 
  1159. application, and at any time, there can be several tasks running the same 
  1160. module, or different modules. Programs can also open further objectstores to 
  1161. access data stored in them. 
  1162.  
  1163.  
  1164. ΓòÉΓòÉΓòÉ 4.6.2. Writing ASL ΓòÉΓòÉΓòÉ
  1165.  
  1166. Each functional line of ASL code contains an ASL statement. Other lines can be 
  1167. blank lines, comment lines or continuation lines where a statement is split 
  1168. over several lines. There is no limit to the number of lines in a block. You 
  1169. can include a comment in any line, and you are free to add spaces between 
  1170. elements of the language to make your programs easy to read and maintain. 
  1171.  
  1172.  
  1173. ΓòÉΓòÉΓòÉ 4.6.2.1. A simple program ΓòÉΓòÉΓòÉ
  1174.  
  1175. The simplest program possible consists of just an ON START block which carries 
  1176. out an action and then stops the program. For example, the following code 
  1177. produces a message on the screen and then stops the program. Each line is 
  1178. commented: 
  1179.  
  1180. ON START                                 ! Definition of the block.
  1181. DO                                       ! To enclose the statements.
  1182.   MESSAGE "FTB10002", 0 ,"Hello world"   ! An information message.
  1183.   STOP                                   ! Stop this program.
  1184. END                                      ! End the block.
  1185.  
  1186. You can enter this code using the Program editor, compile it, as the key 
  1187. program, into an application of your own choice, and run the application. A 
  1188. window containing your message appears on the screen. When you select OK, the 
  1189. message window disappears, and the application stops. The FTB10002 identifies a 
  1190. message box style, the 0 is a reserved parameter, and the text string contains 
  1191. the message to be displayed to the end user. 
  1192.  
  1193.  
  1194. ΓòÉΓòÉΓòÉ 4.6.2.2. Uppercase and lowercase ΓòÉΓòÉΓòÉ
  1195.  
  1196. For clarity, we recommend that you use uppercase for the names of ASL elements, 
  1197. and also, perhaps, for the names of procedures. We also recommend that you use 
  1198. lowercase for the names of variables. ASL is not case sensitive, but using 
  1199. different cases improves the readability of the programs. 
  1200.  
  1201.  
  1202. ΓòÉΓòÉΓòÉ 4.6.2.3. Splitting lines ΓòÉΓòÉΓòÉ
  1203.  
  1204. A functional line of ASL may take up more than one line in the program. You can 
  1205. split a statement over more than one line if you break it after any symbol that 
  1206. implies continuation, such as a comma, an arithmetic operator such as a plus 
  1207. sign (+) or an opening bracket. For more information about this, refer toIBM 
  1208. Visualizer Development for OS/2: Reference, SH45-5096 
  1209.  
  1210. Each new statement begins on a separate line. A statement following ELSE, THEN 
  1211. or FORGIVE, can be on the same line, or on a separate line. 
  1212.  
  1213.  
  1214. ΓòÉΓòÉΓòÉ 4.6.2.4. Comments ΓòÉΓòÉΓòÉ
  1215.  
  1216. Comments either: 
  1217.  
  1218. o Start with an exclamation mark and continue to the end of the line 
  1219. o Start with /* and end with */ on the same line 
  1220. o Start and end with exclamation marks on the same line 
  1221.  
  1222. Lines with an exclamation mark (!) as the first character are comment lines 
  1223. throughout. 
  1224.  
  1225.  
  1226. ΓòÉΓòÉΓòÉ 4.6.2.5. The Program editor ΓòÉΓòÉΓòÉ
  1227.  
  1228. You can use the Program editor to reformat blocks with standard indentation. It 
  1229. can also split and join lines 'intelligently' (taking account of continuation 
  1230. symbols) and provide syntax checking and syntax help while you are writing the 
  1231. program. The Program editor can also generate code for you for windows and 
  1232. menus created with the Window editor and the Menu editor. 
  1233.  
  1234.  
  1235. ΓòÉΓòÉΓòÉ 5. Building your first application ΓòÉΓòÉΓòÉ
  1236.  
  1237. This chapter contains a set of step by step exercises that take you through 
  1238. building a Visualizer application by using Visualizer Development. It assumes 
  1239. no knowledge of Visualizer Query for OS/2 or of Visualizer Development, 
  1240. although familiarity with the basic concepts of OS/2, such as opening folders 
  1241. and copying objects, is highly desirable. 
  1242.  
  1243.  
  1244. ΓòÉΓòÉΓòÉ 5.1. About the application ΓòÉΓòÉΓòÉ
  1245.  
  1246. The application you are going to build consists of one menu, two windows, (a 
  1247. main window and a data window) and two programs. The Data Window will contain a 
  1248. list box, some text, two single line entry fields, and three push buttons. A 
  1249. data table is created, which contains people's names and bank balance. The 
  1250. application will allow the end user to update the information contained in the 
  1251. data table. 
  1252.  
  1253. Note:   The data table you create for the application is a Visualizer table. 
  1254.         However, you could use a DB2/2 (SQL) instead. This would work in much 
  1255.         the same way. 
  1256.  
  1257. The Main Window for your application looks like this: 
  1258.  
  1259. The Data Window, for you application looks like this: 
  1260.  
  1261.  
  1262. ΓòÉΓòÉΓòÉ 5.2. About the exercises ΓòÉΓòÉΓòÉ
  1263.  
  1264. There are 10 exercises in the set: 
  1265.  
  1266. o Exercise 1 - Creating a directory and folder 
  1267. o Exercise 2 - Opening Visualizer Development and setting up 
  1268. o Exercise 3 - Adding the objects to the Make 
  1269. o Exercise 4 - Creating the Menu 
  1270. o Exercise 5 - Creating the Main window 
  1271. o Exercise 6 - Creating the Main program 
  1272. o Exercise 7 - Creating the Data window 
  1273. o Exercise 8 - Creating the Data program 
  1274. o Exercise 9 - Compiling the application 
  1275. o Exercise 10 - Running the application 
  1276.  
  1277. If you are not familiar with OS/2, pay particular attention to the first two 
  1278. exercises. It is also recommended that you read through the appropriate 
  1279. sections of the OS/2 online help system to strengthen your grasp of these 
  1280. skills. 
  1281.  
  1282. Do the exercises in the order in which they are presented. 
  1283.  
  1284. Note:   You do not have to complete the exercises in one session. 
  1285.  
  1286.  
  1287. ΓòÉΓòÉΓòÉ 5.3. Before you start ΓòÉΓòÉΓòÉ
  1288.  
  1289. Ensure that you have Visualizer Development installed according to the 
  1290. information contained in IBM Visualizer Query for OS/2: INstalling and 
  1291. Supporting, SH45-5087. 
  1292.  
  1293. Ensure that you have access to the AVGSAL.REP report. (Look in your Visualizer 
  1294. Samples folder.) 
  1295.  
  1296.  
  1297. ΓòÉΓòÉΓòÉ 5.4. Exercise 1 - Creating a directory and folder ΓòÉΓòÉΓòÉ
  1298.  
  1299. Before creating the application, you should create a directory and a folder to 
  1300. hold the files for the application. 
  1301.  
  1302. If you are an experienced OS/2 user, you may prefer to create the directory and 
  1303. folder without reference to the following sets of instructions. 
  1304.  
  1305. The name of both the directory and folder should be Exercise and you should use 
  1306. the the drive on which you normally keep your work files. 
  1307.  
  1308.  
  1309. ΓòÉΓòÉΓòÉ 5.4.1. Creating the directory ΓòÉΓòÉΓòÉ
  1310.  
  1311. To create the directory: 
  1312.  
  1313.  1. Open the Drives folder by double clicking on the Drives icon. This folder 
  1314.     will have one icon representing each hard disk drive. Move the folder to 
  1315.     the bottom left of the screen. 
  1316.  
  1317.  2. Choose the drive (for example, C, D, or E) you want to hold these files on 
  1318.     by double clicking on it. 
  1319.  
  1320.  3. Open the OS/2 Templates folder by double clicking on the Templates icon. 
  1321.     Move the folder to the top right of the screen. 
  1322.  
  1323.     This folder will contain all your template icons, and one of the icons will 
  1324.     be for a Folder. 
  1325.  
  1326.  4. Place the mouse pointer over the Folder icon in the Templates folder, and 
  1327.     hold down the right button of the mouse. Drag the icon to the Drives folder 
  1328.     so that it is over the icon representing the drive in which you are going 
  1329.     to create the application. Let go of the right button of the mouse. 
  1330.  
  1331.  5. After a few seconds of disk activity, double click on the icon representing 
  1332.     the drive on which you dropped the Folder icon. This will open another 
  1333.     folder, Tree View, of the drive. Scroll up and down until you locate an 
  1334.     icon called Folder. 
  1335.  
  1336.  6. Place the mouse pointer over the Folder icon in the Tree View folder, and 
  1337.     click with the right button of the mouse. On the resultant menu select the 
  1338.     arrow to the right of Open option. From the resultant menu choose Settings. 
  1339.  
  1340.  7. On the resultant Settings notebook control choose the tab marked General. 
  1341.  
  1342.  8. On the resultant page, in the area marked Title, overwrite the existing 
  1343.     text Folder with the text Exercise Close the settings notebook by double 
  1344.     clicking on the System Icon. 
  1345. This has created a directory on the drive called Exercise, and the icon in the 
  1346. Tree View folder will now be called Exercise. 
  1347.  
  1348.  
  1349. ΓòÉΓòÉΓòÉ 5.4.2. Creating the folder ΓòÉΓòÉΓòÉ
  1350.  
  1351. To create the folder: 
  1352.  
  1353.  1. Hold down the Ctrl and Shift key (Arrow) together. Place the mouse pointer 
  1354.     over the Exercise icon in the Tree View folder, hold down the right button 
  1355.     on the mouse, and drag the Exercise icon to anywhere on the desktop. The 
  1356.     icon being dragged should be linked to the original icon by a line. Let go 
  1357.     of the right button of the mouse, and let go of Ctrl and Shift. 
  1358.  
  1359.  2. A new icon will be created on the desktop called Exercise but the text 
  1360.     should be a light grey (assuming you still have the OS/2 defaults). You 
  1361.     have now created a Shadow of the original folder icon. 
  1362.  
  1363.  3. Shut down the Drives Tree View folder, shut down the main Drives folder, 
  1364.     and shut down the Templates folder, 
  1365.  
  1366.  4. Double click on the Exercise folder on the desktop. This folder maps to the 
  1367.     directory Exercise on your chosen drive. The folder will open, but it is 
  1368.     empty. You have no objects in your folder, or in the directory. 
  1369.  
  1370.  5. Make the Exercise folder just big enough to contain eight icons, and move 
  1371.     it to the bottom left of the screen. 
  1372.  
  1373. You have now created a directory and a folder to hold the files for the 
  1374. application. 
  1375.  
  1376.  
  1377. ΓòÉΓòÉΓòÉ 5.5. Exercise 2 - Opening Visualizer Development and setting up ΓòÉΓòÉΓòÉ
  1378.  
  1379. In this exercise, you will open Visualizer Development and use the Visualizer 
  1380. Development templates to create copies of the six objects you need in order to 
  1381. create the application. As you create a copy of each object, you will also 
  1382. rename it. The objects are: 
  1383.  
  1384. o A menu called MainMenu 
  1385. o A window called MainWin 
  1386. o A window called DataWin 
  1387. o A program called MainProg 
  1388. o A program called DataProg 
  1389. o A make called MainMake 
  1390.  
  1391. At the end of this exercise, your Exercise folder should contain icons that 
  1392. represent these objects, and it should look like this: 
  1393.  
  1394. If you look in your Exercise directory, you should find six files that have 
  1395. corresponding names. 
  1396.  
  1397.  
  1398. ΓòÉΓòÉΓòÉ 5.5.1. Creating MainMenu ΓòÉΓòÉΓòÉ
  1399.  
  1400. To create the main menu: 
  1401.  
  1402.  1. Open the main Visualizer folder by double clicking on the Visualizer icon. 
  1403.  
  1404.  2. Open the Shadows of Templates folder by double clicking on the Shadows of 
  1405.     Templates icon. Move the folder to top right of the screen. 
  1406.  
  1407.  3. Close the main Visualizer folder by double clicking on the System Icon. 
  1408.  
  1409.  4. Place the mouse pointer over the Visualizer Menu icon in the Shadows of 
  1410.     Templates folder, hold down the right button of the mouse, and drag the 
  1411.     icon to the Exercise folder. Let go of the right button of the mouse. You 
  1412.     have now created your menu, and the result should look like this: 
  1413. To rename your menu: 
  1414.  
  1415.  1. Click on the icon with the right button of the mouse. On the resultant 
  1416.     menu, select the arrow to the right of Open option. From the resultant 
  1417.     menu, choose Settings. 
  1418.  
  1419.  2. On the resultant Settings notebook control, choose the tab marked General. 
  1420.  
  1421.  3. On the resultant page, in the area marked Title, overwrite the existing 
  1422.     text Visualizer Menu with the text MainMenu. Close the settings notebook by 
  1423.     double clicking on the System Icon. Your renamed menu icon should look like 
  1424.     this: 
  1425.  
  1426.  
  1427. ΓòÉΓòÉΓòÉ 5.5.2. Creating MainWin ΓòÉΓòÉΓòÉ
  1428.  
  1429. To create the main window: 
  1430.  
  1431.  1. Place the mouse pointer over the Visualizer Window icon in the Shadows of 
  1432.     Templates folder, hold down the right button of the mouse, and drag the 
  1433.     icon to the Exercise folder. 
  1434.  
  1435.  2. Let go of the right button of the mouse. 
  1436.  
  1437. You have now created your own window. 
  1438.  
  1439. To rename your window: 
  1440.  
  1441.  1. Place the mouse pointer over your new window icon, hold down the Alt key on 
  1442.     the keyboard, and select with the left button of the mouse. 
  1443.  
  1444.  2. In the resultant box under the icon, overtype the existing text Visualizer 
  1445.     Window with the text MainWin. 
  1446.  
  1447.  3. When finished, select the icon with the left button of the mouse. 
  1448.  
  1449. You have renamed your object MainWin, and have tried an alternative for 
  1450. renaming objects to that used previously for the menu. 
  1451.  
  1452.  
  1453. ΓòÉΓòÉΓòÉ 5.5.3. Creating DataWin ΓòÉΓòÉΓòÉ
  1454.  
  1455. To create the data window: 
  1456.  
  1457.  1. Use the right button of the mouse to select the MainWin icon. 
  1458.  
  1459.  2. On the resultant menu, select Copy. 
  1460.  
  1461.  3. On the resultant window, overtype the existing text in the New name field 
  1462.     with DataWin. 
  1463.  
  1464.  4. At the bottom of the window, press the Copy button. 
  1465.  
  1466. You now have another window, called DataWin. 
  1467.  
  1468.  
  1469. ΓòÉΓòÉΓòÉ 5.5.4. Creating MainProg ΓòÉΓòÉΓòÉ
  1470.  
  1471. To create the main program: 
  1472.  
  1473.  1. Place the mouse pointer over the Visualizer Program icon in the Shadows of 
  1474.     Templates folder. 
  1475.  
  1476.  2. Hold down the right button of the mouse, drag the program icon to the 
  1477.     Exercise folder, and then let go of the mouse button. 
  1478.  
  1479. You have now created your own program. 
  1480.  
  1481. To rename your program: 
  1482.  
  1483.  1. Click on the icon with the right button of the mouse, and on the resultant 
  1484.     menu, select the arrow to the right of Open option. 
  1485.  
  1486.  2. From the resultant menu choose Settings. 
  1487.  
  1488.  3. On the resultant Settings notebook control, choose the tab marked General. 
  1489.  
  1490.  4. On the resultant page, in the area marked Title, overwrite the existing 
  1491.     text with the text MainProg 
  1492.  
  1493.  5. Close the settings notebook by double clicking on the System Icon. 
  1494.  
  1495. This has renamed your object MainProg. 
  1496.  
  1497.  
  1498. ΓòÉΓòÉΓòÉ 5.5.5. Creating DataProg ΓòÉΓòÉΓòÉ
  1499.  
  1500. In this part of the exercise, you create the data program by copying the main 
  1501. program and renaming it. 
  1502.  
  1503. To create the data program: 
  1504.  
  1505.  1. Select the MainProg icon with the right button of the mouse. 
  1506.  
  1507.  2. On the resultant menu, select Copy. 
  1508.  
  1509.  3. On the resultant window next to New name, overtype the existing text with 
  1510.     DataProg 
  1511.  
  1512.  4. At the bottom of the window click on the Copy button. 
  1513.  
  1514. You now have another program, called DataProg. 
  1515.  
  1516.  
  1517. ΓòÉΓòÉΓòÉ 5.5.6. Creating MainMake ΓòÉΓòÉΓòÉ
  1518.  
  1519. Finally, you need to create the Make: 
  1520.  
  1521.  1. Place the mouse pointer over the Visualizer Make icon in the Shadows of 
  1522.     Templates folder, and hold down the right button of the mouse. 
  1523.  
  1524.  2. Drag the icon to the Exercise folder, and let go of the the mouse button. 
  1525.  
  1526. You have now created the Make. 
  1527.  
  1528. To rename the Make: 
  1529.  
  1530.  1. Hold down the Alt key on the keyboard, and select the icon with the left 
  1531.     button of the mouse. 
  1532.  
  1533.  2. In the resultant box under the icon, overtype the existing text with the 
  1534.     text MainMake. When you are finished, select on the icon with the left 
  1535.     button of the mouse. 
  1536.  
  1537. This has renamed your object MainMake. 
  1538.  
  1539. Your Exercise folder should now contain the six icons that you need. They are: 
  1540.  
  1541. o A menu called MainMenu 
  1542. o A window called MainWin 
  1543. o A window called DataWin 
  1544. o A program called MainProg 
  1545. o A program called DataProg 
  1546. o A make called MainMake 
  1547.  
  1548. The folder should look like this: Close the Visualizer Shadows of Templates 
  1549. folder. 
  1550.  
  1551. Check your Exercise directory to see that you have the six corresponding files. 
  1552.  
  1553.  
  1554. ΓòÉΓòÉΓòÉ 5.6. Exercise 3 - Adding the objects to the Make ΓòÉΓòÉΓòÉ
  1555.  
  1556. In this exercise, you add all your newly created Visualizer objects to the 
  1557. Make. At the end of the exercise, your Make window should look like this: 
  1558.  
  1559.  1. In the Exercise folder, double click on the MainMake icon. The Make window 
  1560.     is displayed: 
  1561.  
  1562.  2. In the Exercise folder, place the mouse arrow over the MainMenu icon, hold 
  1563.     down the right button of the mouse, and drag the icon to the MainMake 
  1564.     window. 
  1565.  
  1566.     As you drag, a line links the two icons. 
  1567.  
  1568.     Let go of the mouse button. The MainMenu menu is then added to the 
  1569.     MainMake. 
  1570.  
  1571.  3. In the same way, drag the following icons to the MainMake window: 
  1572.  
  1573.    o MainWin 
  1574.    o DataWin 
  1575.    o MainProg 
  1576.    o DataProg 
  1577.  
  1578.     The Make should now look as follows: 
  1579.  
  1580.  4. Click on the Save tool bar button to save the Make. 
  1581.  
  1582.     Alternatively:, on the MainMake main window, select the Make menu, and from 
  1583.     that menu select Save. 
  1584.  
  1585. You have now added all the Visualizer Development objects you require to the 
  1586. Make. 
  1587.  
  1588. You need to use the Make in the next exercise. If you want to continue at this 
  1589. point, do not close it. 
  1590.  
  1591.  
  1592. ΓòÉΓòÉΓòÉ 5.7. Exercise 4 - Creating the Menu ΓòÉΓòÉΓòÉ
  1593.  
  1594. In this exercise, you create the menu. At the end of the exercise, your menu 
  1595. should look like this: 
  1596.  
  1597.  1. On the MainMake main window, double click on the entry for the MainMenu 
  1598.     menu. This displays a window with the title MainMenu - Menu. 
  1599.  
  1600.  2. Click on the Change menu bar entry tool bar button. Alternatively:, on the 
  1601.     MainMenu - Menu window, select the menu called Menu, and the option Change 
  1602.     menu bar entry. 
  1603.  
  1604.  3. On the resultant window, change the Text to Start the Mnemonic to S and the 
  1605.     Reference to Start as shown in the following illustration. 
  1606.  
  1607.  4. Select OK. 
  1608.  
  1609.     This is the title of the menu, and Start will appear on the menu bar. 
  1610.  
  1611.  5. On the MainMenu - Menu, window select the menu called Selected, and select 
  1612.     the Open Settings option. 
  1613.  
  1614.  6. On the resultant window, type the following text under Entry attributes: 
  1615.  
  1616.    Field               You type 
  1617.    Text                Run report 
  1618.    Accelerator         Shift 
  1619.    Key                 R 
  1620.    Mnemonic            R 
  1621.    Reference           RunRep 
  1622.  
  1623.  7. Make no changes to the bottom half of the window (Entry action). Press the 
  1624.     Apply button, then the Next button. You have just created the first entry 
  1625.     on the menu, Run Report. 
  1626.  
  1627.  8. You are now going to create the second entry on the menu. Type the 
  1628.     following text under Entry attributes: 
  1629.  
  1630.    Field               You type 
  1631.    Text                Start Data Program 
  1632.    Accelerator         Shift 
  1633.    Key                 S 
  1634.    Mnemonic            S 
  1635.    Reference           StartDataProg 
  1636.  
  1637.  9. In the Entry action field, select the Start Program radio button. 
  1638.  
  1639. 10. Select the small button in the bottom right hand corner of the window 
  1640.     marked Select File. 
  1641.  
  1642. 11. From the resultant Select Program window, select the DataProg program and 
  1643.     select OK. The details of the program will be entered in the Location and 
  1644.     Name fields. 
  1645.  
  1646. 12. Press the OK button on the Menu entry settings window. 
  1647.  
  1648. 13. The finished menu should look as follows: 
  1649.  
  1650. 14. Click on the Save tool bar button. Alternatively:, on the MainMenu - Menu 
  1651.     window select the menu called Menu, and the Save option. 
  1652.  
  1653. 15. Double click on the system icon on the top left of the MainMenu - Menu 
  1654.     window to close the window. 
  1655.  
  1656. You have now created the menu. 
  1657.  
  1658. You need to use the Make in the next exercise. If you want to continue at this 
  1659. point, do not close it. 
  1660.  
  1661.  
  1662. ΓòÉΓòÉΓòÉ 5.8. Exercise 5 - Creating the Main window ΓòÉΓòÉΓòÉ
  1663.  
  1664. In this exercise, you create the main window of the application by adding the 
  1665. main menu to a blank window template. At the end of the exercise, your window 
  1666. should look like this: 
  1667.  
  1668.  1. On the MainMake main window, double click on the entry for the MainWin 
  1669.     window. This displays two windows: 
  1670.  
  1671.    o A window with the title MainWin - Window 
  1672.    o A blank window with the title Window Template. 
  1673.  
  1674.  2. By dragging the yellow border, make the Window Template window slightly 
  1675.     smaller. 
  1676.  
  1677.  3. Click on the Open Settings tool bar button. Alternatively:, on the MainWin 
  1678.     - Window window, select the menu called Window and then select the Open 
  1679.     Settings option. 
  1680.  
  1681.  4. On the resultant window, change the Window title to Main Window. 
  1682.  
  1683.  5. Change the border type to Dialog. 
  1684.  
  1685.  6. In the Title bar section, select the Minimize and Maximize check boxes, and 
  1686.     then select OK. 
  1687.  
  1688.     Notice the Window Template has now changed. 
  1689.  
  1690.  7. In the Exercise folder, place the mouse arrow over the MainMenu icon, hold 
  1691.     down the right button of the mouse, and drag the icon to the window called 
  1692.     Main Window. 
  1693.  
  1694.     As you do so, a line links the two icons. 
  1695.  
  1696.  8. Let go of the mouse button. The MainMenu menu is added to the Main Window 
  1697.     window. 
  1698.  
  1699.  9. On the Main Window window, select the Start menu and note the two options, 
  1700.     Run Report and Start Data Program, as shown in the following illustration: 
  1701.  
  1702. 10. Click on the Save tool bar button. Alternatively:, on the MainWin - Window 
  1703.     window select the menu called Window, and the Save option. 
  1704.  
  1705. 11. Double click on the system icon on the top left of the MainWin - Window 
  1706.     window to close down the window. 
  1707.  
  1708. You have now created the MainWin window. 
  1709.  
  1710. You need to use the Make in the next exercise. If you want to continue at this 
  1711. point, do not close it. 
  1712.  
  1713.  
  1714. ΓòÉΓòÉΓòÉ 5.9. Exercise 6 - Creating the Main program ΓòÉΓòÉΓòÉ
  1715.  
  1716. In this exercise, you create the main program - the code which is the entry 
  1717. point to the application. 
  1718.  
  1719. Much of the code is generated for you automatically by Visualizer Development, 
  1720. based on the design of your window. You are going to automatically generate 
  1721. some code based on the window you have just created called MainWin. 
  1722.  
  1723. You also need to use the shadow of an existing Visualizer Report, such as 
  1724. AVGSAL.REP. (Look in your Visualizer Samples folder.) 
  1725.  
  1726. Before you start the exercise, create a shadow of the report and position the 
  1727. shadowed report icon in such a way that it is near the top of the window. Later 
  1728. in the exercise, you need to drag it to another window. 
  1729.  
  1730.  1. On the MainMake main window, double click on the entry for the MainProg 
  1731.     program. This displays a window with the title MainProg - Program: 
  1732.  
  1733.  2. In the Exercise folder, place the mouse arrow over the MainWin icon, hold 
  1734.     down the right button of the mouse, drag it to anywhere on the MainProg 
  1735.     window, and let go of the mouse button. 
  1736.  
  1737.     After a few seconds a MainProg - Create window is displayed. This indicates 
  1738.     which blocks of code are going to be built, based on the window MainWin. It 
  1739.     looks like this: 
  1740.  
  1741.  3. Press the OK button to accept the defaults. 
  1742.  
  1743.     The MainProg - Program window will now look like this: 
  1744.  
  1745.  4. In the MainProg - Program window, under the Events list box, double click 
  1746.     on the word SELECT. The following window will be displayed, showing the ON 
  1747.     SELECT block of code. 
  1748.  
  1749.  5. Using the title bar and the yellow border, position and size the MainProg - 
  1750.     Event(SELECT) window so that it fills most of the screen.  Do not cover up 
  1751.     the Report icon you positioned earlier at the top of the window. 
  1752.  
  1753.  6. Within the MainProg - Event(SELECT) window locate the following text: 
  1754.  
  1755.           !
  1756.           WHEN "T.W_MainWin.RunRep"
  1757.           DO
  1758.           ! Respond to Menu entry marked '"Run Report"'
  1759.           END
  1760.           !
  1761.  
  1762.  7. Place the cursor at the end of the line which contains the text: 
  1763.  
  1764.  
  1765.         ! Respond to Menu entry marked '"Run Report"'
  1766.  
  1767.     Select with the left button of mouse to position the cursor there, and 
  1768.     press the enter a couple of times to make some space. 
  1769.  
  1770.     The text should now look as follows: 
  1771.  
  1772.           !
  1773.           WHEN "T.W_MainWin.RunRep"
  1774.           DO
  1775.           ! Respond to Menu entry marked '"Run Report"'
  1776.  
  1777.           <cursor position>
  1778.           END
  1779.           !
  1780.  
  1781.  8. Place the mouse arrow over the report icon that you want to use, hold down 
  1782.     the right button of the mouse and drag the icon to the MainProg - 
  1783.     Event(SELECT) window. 
  1784.  
  1785.  9. Place the icon anywhere on the window and let go of the mouse button. 
  1786.  
  1787.     Text, similar to the text that follows, will be added to the existing text 
  1788.     (you may need to scroll up or down to find it). 
  1789.  
  1790.           IF NULL(AVGSAL_Rep'CLASS)
  1791.             OPEN IBMREPORT AVGSAL_Rep,
  1792.               NAME = "AVGSAL.REP",
  1793.               IDENTIFIER = "D:\FTW\SAMPLES\ENU\AVGSAL.REP"
  1794.  
  1795.           CALL AVGSAL_Rep'OPEN()
  1796.  
  1797.     Note:   The generated code is placed at the cursor, not the position where 
  1798.     you drop the icon. 
  1799.  
  1800. 10. Remove any blank lines from before and after the new text (use the delete 
  1801.     key). 
  1802.  
  1803. 11. Click on the Format tool bar button to line up the text. 
  1804.  
  1805.     The text should now look similar to the following (there is more text above 
  1806.     and below this text). 
  1807.  
  1808.           !
  1809.           WHEN "T.W_MainWin.RunRep"
  1810.           DO
  1811.           ! Respond to Menu entry marked '"Run Report"'
  1812.           IF NULL(AVGSAL_Rep'CLASS)
  1813.             OPEN IBMREPORT AVGSAL_Rep,
  1814.               NAME = "AVGSAL.REP",
  1815.               IDENTIFIER = "D:\FTW\SAMPLES\ENU\AVGSAL.REP"
  1816.  
  1817.           CALL AVGSAL_Rep'OPEN()
  1818.  
  1819.           END
  1820.           !
  1821.  
  1822. 12. Close the MainProg - Event(SELECT) window by double-clicking on the System 
  1823.     Icon, and select Yes when prompted to save changes to the code. 
  1824.  
  1825. 13. Click on the Save tool bar button. Alternatively:, on the MainProg - 
  1826.     Program main window, select the menu called Program, and from that menu 
  1827.     select Save. 
  1828.  
  1829. 14. Double click on the system icon on the top left of the MainProg - Program 
  1830.     window to close the window. 
  1831.  
  1832. You have now created your main program. 
  1833.  
  1834. You need to use the Make in the next exercise. If you want to continue at this 
  1835. point, do not close it. 
  1836.  
  1837.  
  1838. ΓòÉΓòÉΓòÉ 5.10. Exercise 7 - Creating the Data window ΓòÉΓòÉΓòÉ
  1839.  
  1840. In this exercise, you create the Data window. You use the Data window for 
  1841. entering the data that your application will process. 
  1842.  
  1843. During the exercise, you select the controls you need to include in the Data 
  1844. window, position them where you want them to be, and resize them by using the 
  1845. mouse. 
  1846.  
  1847. The exercise also introduces the technique of cloning. Visualizer Development 
  1848. allows you to replicate window controls that you have created into sets that 
  1849. work together. You can clone a control by using the the Clones window. 
  1850.  
  1851. At the end of the exercise, your Data window should look like this: 
  1852.  
  1853. As you can see, the window contains the following parts: 
  1854.  
  1855. o Three Push buttons 
  1856. o A List box with horizontal and vertical scroll bars 
  1857. o Two Single line entry fields with accompanying text fields 
  1858.  
  1859. This exercise is divided into three corresponding parts. 
  1860.  
  1861. When you start the exercise, and the Window Template is on display, turn on the 
  1862. tool bar Display grid and the Snap to grid functions. 
  1863.  
  1864. The Display grid function causes the Window Template to display a matrix of 
  1865. dots. These are designed to help you align manually the controls that you place 
  1866. on the window. The Window Template with the grid on display looks like this: 
  1867. The Snap to grid function aligns controls automatically to the nearest row and 
  1868. column of dots. 
  1869.  
  1870.  
  1871. ΓòÉΓòÉΓòÉ 5.10.1. Adding the push buttons ΓòÉΓòÉΓòÉ
  1872.  
  1873. To create and position the push buttons: 
  1874.  
  1875.  1. On the MainMake main window, double click on the entry for the DataWin 
  1876.     window. 
  1877.  
  1878.     This displays two windows: a window with the title DataWin - Window, and a 
  1879.     window with the title Window Template. 
  1880.  
  1881.  2. To make it easier to build the window, position the DataWin - Window at the 
  1882.     top left of the screen, and position the Window Template at the bottom 
  1883.     right of the screen. 
  1884.  
  1885.     Do not change the size of the Window Template. 
  1886.  
  1887.  3. On the DataWin - Window window, under the text Controls Palette, select 
  1888.     dropdown list, and from the resultant list select Push button. You may need 
  1889.     to scroll down the list to locate Push button. 
  1890.  
  1891.  4. In the data entry field to the right of the text Data1, type Insert and 
  1892.     select the check box called Text. 
  1893.  
  1894.  5. On the Edit menu choose the Place control option. 
  1895.  
  1896.  6. On the resultant Place control window type the numbers 5 for X position, 
  1897.     and 5 for Y position. Press OK. 
  1898.  
  1899.     This places a push button containing the text Insert in the bottom left 
  1900.     hand corner of the Window Template. 
  1901.  
  1902.     Alternatively, use the mouse to select the position on the Window Template 
  1903.     where you want the push button to appear. Move the mouse arrow to the 
  1904.     position, and click the left mouse button. 
  1905.  
  1906.     Note:   The position of the mouse arrow becomes the position of the bottom 
  1907.     left corner of the push button. 
  1908.  
  1909.  7. On the Selected menu, choose the Clones option. 
  1910.  
  1911.  8. On the resultant Clones window, type 3 for Number of clones, and 5 for 
  1912.     Clone gap. Select Right for Clone direction. Press OK. 
  1913.  
  1914. You now have three push buttons in the bottom left corner of the window, but 
  1915. they are all labelled Insert. You need to change the labels on two push 
  1916. buttons, and you need to increase the length of the buttons to accommodate 
  1917. their new longer labels. 
  1918.  
  1919.  1. On the Selected menu choose the Change Name option. 
  1920.  
  1921.     On the resultant Change name window, you see first the information for 
  1922.     button one, Clone 1. 
  1923.  
  1924.  2. Press the down arrow beside the Clone number and you see the information 
  1925.     for button two, Clone 2. 
  1926.  
  1927.  3. In the data entry field to the right of Data 1, overwrite Insert with the 
  1928.     text Change and press Apply. 
  1929.  
  1930.  4. Press the down arrow beside the Clone number and you see the information 
  1931.     for button three, Clone 3. 
  1932.  
  1933.  5. In the data entry field to the right of Data 1, overwrite the text Insert 
  1934.     with the text Delete and press OK. 
  1935.  
  1936.  6. Shut the Change name window by double clicking on the System Icon. 
  1937.  
  1938.     In the Window Template window, you now have three push buttons called 
  1939.     Insert, Change, and Delete, but the buttons may be too small to hold all 
  1940.     the text. In the step, you resize them by using the mouse. 
  1941.  
  1942.     The group of three is surrounded by a border which has eight sizing handles 
  1943.     around it. 
  1944.  
  1945.  7. Place the mouse cursor on the handle in the middle of the right side of the 
  1946.     border. The mouse cursor turns into a left-right arrow. Hold down either 
  1947.     mouse button and drag the the border to the right. Make the push buttons 
  1948.     about 50% wider, but do not make them any higher. 
  1949.  
  1950.     The window should now look as follows: 
  1951.  
  1952.  
  1953. ΓòÉΓòÉΓòÉ 5.10.2. Adding the list box with scroll bars ΓòÉΓòÉΓòÉ
  1954.  
  1955. In the following section of this exercise, you add the list box and its scroll 
  1956. bars to the window: 
  1957.  
  1958.  1. On the DataWin - Window window, under the text Controls Palette, select the 
  1959.     down arrow, and from the resultant list select List box.  (You need to 
  1960.     scroll down the list to locate List box.) 
  1961.  
  1962.  2. In the data entry field, to the right of the text Data1, type Layout and in 
  1963.     the data entry field, to the right of the text Data2, type Column as shown 
  1964.     in the following screen: 
  1965.  
  1966.  3. Move the mouse arrow to the position on the window template where you want 
  1967.     the List box to appear, and double click the left mouse button. 
  1968.  
  1969.     Note:   Remember that the position of the mouse arrow becomes the position 
  1970.     of the bottom left corner of the List box. 
  1971.  
  1972.     Alternatively, you could use the Edit menu, and the Place control option. 
  1973.     If so, type 5 for X position, 25 for Y position, and press OK. This will 
  1974.     place a list box above the push buttons in the Window Template. 
  1975.  
  1976.  4. On the Selected menu, choose the Open Settings option. 
  1977.  
  1978.  5. On the resultant List box - Settings window, select Vertical and Horizontal 
  1979.     scroll bars, and press OK. 
  1980.  
  1981.     Your List box should now have its horizontal and vertical scroll bars. 
  1982.  
  1983.  6. Resize the List box by using the mouse so that it is almost the full width 
  1984.     of the window, as shown in the following screen. 
  1985.  
  1986.     Remember - use the left mouse button to select the List box; use either 
  1987.     mouse button to drag the appropriate sizing handle. 
  1988.  
  1989.     The window should now look as follows: 
  1990.  
  1991.  
  1992. ΓòÉΓòÉΓòÉ 5.10.3. Adding the single line entry fields ΓòÉΓòÉΓòÉ
  1993.  
  1994. In this third and final part of this exercise, you add the two labelled Single 
  1995. line entry fields, and then save the whole window. 
  1996.  
  1997. You use the mouse and Ctrl key to copy and position the second of the two entry 
  1998. fields. 
  1999.  
  2000. At the end of this part of the exercise, your window is complete, and it should 
  2001. look like this: 
  2002.  
  2003.  1. On the DataWin - Window window, under the text Controls Palette, select the 
  2004.     down arrow, and from the resultant list select Text. 
  2005.  
  2006.  2. In the data entry field, to the right of the text Data1, type Name and 
  2007.     select on the check box called Text. 
  2008.  
  2009.  3. Move the mouse arrow to the position on the Window Template where you want 
  2010.     the text to appear, and double click the left mouse button. 
  2011.  
  2012.     Name appears on the Window Template. 
  2013.  
  2014.  4. Move the mouse arrow back to the Controls Palette and open it. 
  2015.  
  2016.  5. Scroll down the list and select Single line edit 
  2017.  
  2018.  6. In the data entry field, to the right of the text Data1, type SLEName. 
  2019.  
  2020.  7. Move the mouse arrow back to the Window Template, position it where you 
  2021.     want the Single line entry field to appear, beside Name, and double click 
  2022.     the left mouse button. 
  2023.  
  2024.     The entry field appears on the Window Template. 
  2025.  
  2026.  8. Resize the entry field by using the mouse. Make it about three times as 
  2027.     long. 
  2028.  
  2029.     Remember - use the left mouse button to select the entry field; use either 
  2030.     mouse button to grab the appropriate sizing handle and drag it till the 
  2031.     extry field is long enough. 
  2032.  
  2033. Now you need to copy both the name and the entry field. You then need to change 
  2034. the label on the copy, and resize the space for the new label. You also need to 
  2035. shorten the copied entry field. 
  2036.  
  2037.  1. Select Name by placing the mouse pointer on top of it and clicking the left 
  2038.     mouse button. 
  2039.  
  2040.     The sizing handles appear around it. 
  2041.  
  2042.  2. Release the left mouse button, and hold down the right mouse button. 
  2043.  
  2044.  3. Drag to the position where you want the copy of Name to appear below the 
  2045.     original. 
  2046.  
  2047.     Note:   As you begin to do this, a shadowed copy of the border around Name 
  2048.             appears and moves as you drag. 
  2049.  
  2050.  4. Press and hold the Ctrl key, and release the right mouse button. 
  2051.  
  2052.     The copy of Name appears below the original. 
  2053.  
  2054.  5. Select the copy by clicking on it with the left mouse button, and open the 
  2055.     Selected menu on the DataWin - Window. 
  2056.  
  2057.  6. Select the Change Name option. 
  2058.  
  2059.     The Change Name screen is displayed. 
  2060.  
  2061.  7. In the data entry field, to the right of the text Data1, type Balance and 
  2062.     select OK. 
  2063.  
  2064.     The word Balance now replaces the word Name on the template window, but not 
  2065.     all of it is visible. You need to lengthen the space for it. 
  2066.  
  2067.  8. Select Balance 
  2068.  
  2069.  9. Use the mouse to copy the Single line entry field and position it beside 
  2070.     the word Balance. 
  2071.  
  2072.     Remember - use the left mouse button to select, release it and then hold 
  2073.     down the right mouse button and drag. Hold down the Ctrl key and release 
  2074.     the right mouse button. 
  2075.  
  2076. 10. Shorten the copied entry field to about half of its original length by 
  2077.     using the mouse. 
  2078.  
  2079. 11. With the sizing handles still around the entry field, go back to the 
  2080.     Selected menu on the DataWin - Window 
  2081.  
  2082. 12. Select the Change Name option. 
  2083.  
  2084.     The Change Name screen is displayed. 
  2085.  
  2086. 13. In the entry field, to the right of the text Data1, type SLEBalance and 
  2087.     select Apply. 
  2088.  
  2089. 14. Click on the Open settings tool bar button. Alternatively:, on the DataWin 
  2090.     - Window window, select the Window menu and select the Open Settings 
  2091.     option. 
  2092.  
  2093. 15. On the resultant window, change the Window title to Data Window and the 
  2094.     border to Dialog. Select the OK button. Note how the Window Template has 
  2095.     changed. 
  2096.  
  2097. 16. Click on the Save tool bar button. Alternatively:, on the DataWin - Window 
  2098.     window select the Window menu and select the Save option. 
  2099.  
  2100. 17. Close the DataWin - Window window by double clicking on the system icon in 
  2101.     its top left corner. 
  2102.  
  2103. You have now created the DataWin window. 
  2104.  
  2105. You need to use the Make in the next exercise. If you want to continue at this 
  2106. point, do not close it. 
  2107.  
  2108.  
  2109. ΓòÉΓòÉΓòÉ 5.11. Exercise 8 - Creating the Data program ΓòÉΓòÉΓòÉ
  2110.  
  2111. In this exercise, you create the Data program. 
  2112.  
  2113. The Data program is generated from the Data window in a way similar to the way 
  2114. that Main program was generated from the Main window. For the most part, the 
  2115. process is automatic, and then you make some manual additions. 
  2116.  
  2117. The code you generate is based on the window you have just created called 
  2118. DataWin,. 
  2119.  
  2120.  1. On the MainMake main window, double click on the entry for the DataProg 
  2121.     program. This displays a window with the title DataProg - Program. 
  2122.  
  2123.  2. In the Exercise folder, place the mouse arrow over the DataWin icon, hold 
  2124.     down the right button of the mouse, and drag the icon to anywhere on the 
  2125.     DataProg window. Let go of the mouse button when you have finished. 
  2126.  
  2127.     The DataProg - Create window is displayed. This indicates which blocks of 
  2128.     code are going to be built, based on the window DataWin. 
  2129.  
  2130. Because you have a list box on your window, you need to indicate which data 
  2131. this list box is going to show: 
  2132.  
  2133.  1. In the top right hand corner of the DataProg - Create window, select on the 
  2134.     text Data for Lists. 
  2135.  
  2136.     This changes the window to look as follows: 
  2137.  
  2138.  2. Select the small Add details button in the center of the window. 
  2139.  
  2140.     A window with the title DataProg - Define 'LIST1' on window 'DataWin' is 
  2141.     displayed: 
  2142.  
  2143.  3. In the data entry fields Title, Data, and Width, type the following text: 
  2144.  
  2145.    Field               You type 
  2146.    Title               Name 
  2147.    Data                Tab1.Name 
  2148.    Width               150 
  2149.  
  2150.  4. Press the Apply button. 
  2151.  
  2152.     This updates the list box at the top of the window with the details of 
  2153.     column 1. 
  2154.  
  2155.  5. In the data entry fields Title, Data, and Width type the following text: 
  2156.  
  2157.    Field               You type 
  2158.    Title               Balance 
  2159.    Data                Tab1.Balance 
  2160.    Width               100 
  2161.  
  2162.  6. Press the Apply button. 
  2163.  
  2164.     This updates the list box at the top of the window with the details of 
  2165.     column 2. 
  2166.  
  2167.  7. Press OK on the DataProg - Define 'LIST1' on window 'DataWin' window. 
  2168.  
  2169.  
  2170. ΓòÉΓòÉΓòÉ 5.11.1. Generating the code ΓòÉΓòÉΓòÉ
  2171.  
  2172. To generate the code: 
  2173.  
  2174.  1. In the top left hand corner of the DataProg - Create window, select the 
  2175.     text Blocks to be built. 
  2176.  
  2177.     The window reverts to its original layout. 
  2178.  
  2179.  2. Press OK. 
  2180.  
  2181.     The code is now generated automatically, and the DataProg - Program window 
  2182.     should look as follows: 
  2183.  
  2184.  
  2185. ΓòÉΓòÉΓòÉ 5.11.2. Editing the code ΓòÉΓòÉΓòÉ
  2186.  
  2187. The following sets of instructions tell you how to insert additional blocks of 
  2188. code you need for running the application. 
  2189.  
  2190.  
  2191. ΓòÉΓòÉΓòÉ 5.11.2.1. Adding code to the On Start block ΓòÉΓòÉΓòÉ
  2192.  
  2193. The following additional code creates a data table called Mytable.Tab, adds two 
  2194. columns called Name and Balance, and enters two rows of data into the table. 
  2195. You add the code to the ON START block of code so that the table is created 
  2196. each time the program runs. 
  2197.  
  2198. Note:   When you type vertical bars, ensure that they are the unbroken vertical 
  2199.         bars, or the code will not work. 
  2200.  
  2201.  1. In the DataProg - Program window, under the text Events, double click on 
  2202.     the word START. 
  2203.  
  2204.     The DataProg - Event(START) window is displayed, and it should contain the 
  2205.     ON START block of code. 
  2206.  
  2207.  2. Maximize the window by selecting the button in the top right hand corner of 
  2208.     the DataProg - Event(START) window. Within the DataProg - Event(START) 
  2209.     window locate the following text: 
  2210.  
  2211.              CALL List_Define
  2212.              CALL Source_Define
  2213.              CALL Target_Define
  2214.              !
  2215.              OPEN WINDOW W_DataWin, , "I.Windows.DataWin",
  2216.               SOURCECTRL = POINTER(SourceCtrl[0]),
  2217.               TARGETCTRL = POINTER(TargetCtrl[0])
  2218.  
  2219.  3. Place the cursor at the end of the line which contains the text CALL 
  2220.     Target_Define. Use the left button of the mouse to position the cursor 
  2221.     there, and press the enter key to create some blank lines. 
  2222.  
  2223.  4. In the space after the CALL Target_Define statement, type the following 
  2224.     text. 
  2225.  
  2226.              ! Set two variables to hold the name of the table,
  2227.              ! and it's location
  2228.              LET tabname = "mytable.tab"
  2229.              LET tabloc = A.System.StartDS'LOCATION
  2230.  
  2231.              ! Delete the table if it already exists,
  2232.              ! but ignore error (FORGIVE) if table does not exist
  2233.              OPEN SYSTEM Sys
  2234.              FORGIVE
  2235.                CALL Sys'DELETE(FULLPATH(tabloc,tabname))
  2236.  
  2237.              ! Open a new table, known to the program as Tab1
  2238.              OPEN TABLE Tab1,
  2239.               NAME = tabname,
  2240.               LOCATION = tabloc,
  2241.               MODE = "Write",
  2242.               OBJECTCLASS = "IBMTABLE"
  2243.  
  2244.              ! Put two columns in the table
  2245.              DEFINE Tab1.Name[0]
  2246.              DEFINE Tab1.Balance[0]
  2247.  
  2248.              ! Set some column attributes
  2249.              LET Tab1.Name[0]'TYPE = "Character"
  2250.              LET Tab1.Name[0]'WIDTH = 50
  2251.              LET Tab1.Balance[0]'TYPE = "Numeric"
  2252.              LET Tab1.Balance[0]'WIDTH = 50
  2253.              LET Tab1.Balance[0]'FORMAT = "$,<2"
  2254.  
  2255.              ! Create the table key column as 'Name'
  2256.              DEFINE keys[1]
  2257.              LET keys[1]= "Name"
  2258.              CALL Tab1'SETKEYS(keys)
  2259.  
  2260.              !Add two rows of data
  2261.              INSERT Tab1.Balance{"Martin Smith"} = 12345
  2262.              INSERT Tab1.Balance{"Mary Jones"} = 23456
  2263.  
  2264.  5. Click on the Format tool bar button to line up the text. Alternatively:, go 
  2265.     back to the DataProg - Program window, and select the Format option from 
  2266.     the Program menu. 
  2267.  
  2268.  6. Click on the Syntax tool bar button to check the syntax of the code. 
  2269.  
  2270.     Correct any errors you may have in your code by verifying it against the 
  2271.     code above. 
  2272.  
  2273.  7. Shut the DataProg - Event(START) window, by double clicking on the System 
  2274.     Icon, and select Yes when prompted to save changes to the code. 
  2275.  
  2276.  
  2277. ΓòÉΓòÉΓòÉ 5.11.2.2. Adding code to the ON SELECT block ΓòÉΓòÉΓòÉ
  2278.  
  2279. You need to add sections of code to four areas of the ON SELECT block of code. 
  2280. The sections of code you add, relate to the following user actions: 
  2281.  
  2282. o Pressing the Insert button 
  2283. o Pressing the Change button 
  2284. o Pressing the Delete button 
  2285. o Selecting a row in the list box 
  2286.  
  2287. Adding code for the Insert action 
  2288.  
  2289. The code you type in this set of instructions runs when a user presses the 
  2290. Insert button to add a new row to the table. 
  2291.  
  2292.  1. In the DataProg - Program window, under the text Events, double click on 
  2293.     the word SELECT. 
  2294.  
  2295.     The DataProg - Event(SELECT) window is displayed, and it should contain the 
  2296.     ON SELECT block of code. 
  2297.  
  2298.  2. If it is not already maximized, maximize the window by selecting on the 
  2299.     button in the top right hand corner of the DataProg - Event(SELECT) window. 
  2300.  
  2301.  3. Within the DataProg - Event(SELECT) window, locate the following text: 
  2302.  
  2303.         WHEN 1                                     ! button marked 'Insert
  2304.         DO
  2305.         ! 'push' button marked 'Insert'
  2306.         END
  2307.  
  2308.  4. Place the cursor at the end of the line which contains the text ! 'push' 
  2309.     button marked 'Insert', and press the enter key to insert some blank lines. 
  2310.  
  2311.  5. In the space after the ! 'push' button marked 'Insert' statement, type the 
  2312.     following text: 
  2313.  
  2314.         IF ROW(Tab1.Name{SLEName}) = 0
  2315.         DO
  2316.           LET row = INSERT(Tab1.Name{SLEName})
  2317.           LET Tab1.Balance[row] = SLEBalance
  2318.         END
  2319.         ELSE
  2320.           MESSAGE "FTB10003",0,
  2321.             "The row you want to insert already "||
  2322.             "exists.  Please retry."
  2323.  
  2324.  
  2325. Adding code for the Change action 
  2326.  
  2327. The code you type in this set of instructions runs when the user presses the 
  2328. Change button to change existing data in the table. 
  2329.  
  2330.  1. Scroll down the window and locate the following text: 
  2331.  
  2332.         WHEN 2                                     ! button marked 'Change
  2333.         DO
  2334.         ! 'push' button marked 'Change'
  2335.         END
  2336.  
  2337.  2. Place the cursor at the end of the line which contains the text ! 'push' 
  2338.     button marked 'Change'. Press the enter key to create some blank lines. 
  2339.  
  2340.  3. In the blank lines after the ! 'push' button marked 'Change' statement, 
  2341.     type the following text: 
  2342.  
  2343.         IF ROW(Tab1.Name{SLEName}) > 0
  2344.         DO
  2345.           LET Tab1.Balance{SLEName} = SLEBalance
  2346.           END
  2347.         ELSE
  2348.           MESSAGE "FTB10003",0,
  2349.            "The row you want to change does not "||
  2350.            "exist.  Please retry."
  2351.  
  2352.  
  2353. Adding code for the Delete action 
  2354.  
  2355. The code you type in this set of instructions runs when the user presses the 
  2356. Delete button to delete an existing row in the table. 
  2357.  
  2358.  1. Scroll down the window and locate the following text: 
  2359.  
  2360.         WHEN 3                                    ! button marked 'Delete
  2361.         DO
  2362.         ! 'push' button marked 'Delete'
  2363.         END
  2364.  
  2365.  2. Place the cursor at the end of the line which contains the text ! 'push' 
  2366.     button marked 'Delete' Press the enter key to create some blank lines. 
  2367.  
  2368.  3. In the blank lines after the ! 'push' button marked 'Delete' statement, 
  2369.     type the following text: 
  2370.  
  2371.         IF ROW(Tab1.Name{SLEName}) > 0
  2372.           DELETE Tab1.Name{SLEName}
  2373.         ELSE
  2374.           MESSAGE "FTB10003",0,
  2375.            "The row you want to delete does not "||
  2376.            "exist.  Please retry."
  2377.  
  2378.  
  2379. Adding code for the Select action 
  2380.  
  2381. The code you type in this set of instructions runs when the user selects a row 
  2382. in the list box. 
  2383.  
  2384.  1. Scroll down the window and locate the following text: 
  2385.  
  2386.         WHEN "T.W_DataWin.LIST1"
  2387.         DO
  2388.         ! list box set for single select mode
  2389.         END
  2390.  
  2391.  2. Place the cursor at the end of the line which contains the text ! list box 
  2392.     set for single select mode (select with the left button of mouse to 
  2393.     position the cursor there) and press the enter key to create some blank 
  2394.     lines. 
  2395.  
  2396.  3. In the blank lines after the ! list box set for single select mode 
  2397.     statement, type the following text. 
  2398.  
  2399.         IF A.System.BoxNumber > 0        ! Enduser select
  2400.         DO
  2401.           LET SLEname = Tab1.Name[A.System.BoxNumber]
  2402.           LET SLEbalance = Tab1.Balance[A.System.BoxNumber]
  2403.         END
  2404.  
  2405.  4. Click on the Format tool bar button to line up the text. Alternatively:, go 
  2406.     back to the DataProg - Program window, and select the Format option from 
  2407.     the Program menu. 
  2408.  
  2409.  5. Press the Syntax button to check the syntax of the code. 
  2410.  
  2411.     Correct any errors you may have in your code by verifying it against the 
  2412.     code above. 
  2413.  
  2414.  6. Shut the DataProg - Event(SELECT) window by double clicking on the System 
  2415.     Icon, and select Yes when prompted to save changes to the code. 
  2416.  
  2417.  7. Click on the Save tool bar button. Alternatively:, on the DataProg - 
  2418.     Program main window, select the Program menu, and from that menu select 
  2419.     Save. 
  2420.  
  2421.  8. Double click on the system icon on the top left of the DataProg - Program 
  2422.     window to close down the window. 
  2423.  
  2424. You have now created your data program. 
  2425.  
  2426. You need to use the Make in the next exercise. If you want to continue at this 
  2427. point, do not close it. 
  2428.  
  2429.  
  2430. ΓòÉΓòÉΓòÉ 5.12. Exercise 9 - Compiling the application ΓòÉΓòÉΓòÉ
  2431.  
  2432. In this exercise, you compile the objects into an application. 
  2433.  
  2434.  1. On the MainMake main window, choose the Make menu, and the Set compile 
  2435.     destination option. 
  2436.  
  2437.  2. On the resultant window, MainMake - Compile destination, next to 
  2438.     Application name, type MainApp and press OK. 
  2439.  
  2440.     On the MainMake main window, the text at the bottom of the screen should 
  2441.     now be Destination: MainApp. 
  2442.  
  2443.  3. Within the MainMake main window, select the entry for MainProg. 
  2444.  
  2445.  4. Select the Selected menu, and then select the Make Key option. 
  2446.  
  2447.     The class of the MainProg should then be Key Program. 
  2448.  
  2449.  5. Click on the Compile all tool bar button. Alternatively:, on the MainMake 
  2450.     main window, choose the Make menu, and select the Compile all option. 
  2451.  
  2452. After a few seconds, you should hear a sound. 
  2453.  
  2454. If the compile has been successful, the MainApp application icon is added 
  2455. automatically to your Exercise folder. Your folder should now look like this: 
  2456.  
  2457. You have now finished developing your application. 
  2458.  
  2459.  
  2460. ΓòÉΓòÉΓòÉ 5.12.1. What to do if you get errors ΓòÉΓòÉΓòÉ
  2461.  
  2462. If you get errors when you compile your application, Visualizer Development 
  2463. displays a window which tells you the program where they occur, and lists the 
  2464. line numbers which may be at fault. 
  2465.  
  2466. In many cases, one error-often the first one listed in a specified program-can 
  2467. cause the compiler to register errors in lines which are correct. Therefore, 
  2468. you may find that in correcting just one error, other apparent errors disappear 
  2469. when you re-compile. 
  2470.  
  2471. To investigate and correct errors: 
  2472.  
  2473. Move the mouse arrow to the appropriate program entry in the MainMake-Make 
  2474. window, and double click on it. 
  2475.  
  2476. This action opens the Program editor window which displays the source code for 
  2477. the specified program. 
  2478.  
  2479. There are now three courses of action you can try: 
  2480.  
  2481.    o Use the Compile tool bar button to compile the program by itself. 
  2482.  
  2483.      When you compile an individual program, Visualizer Development produces a 
  2484.      more comprehensive list of errors. 
  2485.  
  2486.    o Check all the code you have added to the program against the code you were 
  2487.      instructed to type in the appropriate exercise. 
  2488.  
  2489.      You may have, for example, accidentally omitted a line of code, or made a 
  2490.      typing or syntax error. 
  2491.  
  2492.    o Use the Syntax tool bar button to check the code for syntax errors. 
  2493.  
  2494. For more information on debugging code, refer to IBM Visualizer Development for 
  2495. OS/2: Using, SH45-5095. 
  2496.  
  2497.  
  2498. ΓòÉΓòÉΓòÉ 5.13. Exercise 10 - Running the application ΓòÉΓòÉΓòÉ
  2499.  
  2500. In this exercise, you run the application, and enter data which you can 
  2501. process. 
  2502.  
  2503.  1. In the Exercise folder, double click on the MainApp application icon. 
  2504.  
  2505.     The main window for your application, Main Window, is displayed: 
  2506.  
  2507.  2. Select the Start menu and choose the first option, Run Report. 
  2508.  
  2509.     This opens the Visualizer Report. 
  2510.  
  2511.  3. Close down the report by double clicking on the report system icon. 
  2512.  
  2513.  4. On the main window for your application, Main Window, select the Start menu 
  2514.     and choose the second option, Start Data Program. 
  2515.  
  2516.     This displays your other window, the Data Window, containing the list box 
  2517.     and the data from your table. 
  2518.  
  2519.     Note:   Starting this program has also created the table mytable.tab which 
  2520.             has been added to the Exercise folder: 
  2521.  
  2522.  5. In the Name field of the Data Window, type the name Steve Dickson. In the 
  2523.     Balance field, type a balance of 56789 and press Insert. The new data is 
  2524.     added to the table and the list box is updated. 
  2525.  
  2526.  6. In the list box, select the row for Mary Jones. (You may need to scroll.) 
  2527.  
  2528.     This data is added to the Name and Balance fields above. 
  2529.  
  2530.  7. In the Balance field, change the data to 98765 and press Change. The data 
  2531.     in the table and the list box is updated. 
  2532.  
  2533.  8. In the list box, select the row for Martin Smith. This data is added to the 
  2534.     Name and Balance fields above. 
  2535.  
  2536.  9. Press Delete. The data is deleted from the table and the list box. 
  2537.  
  2538. 10. Try other operations such as pressing the insert button when the name field 
  2539.     is a name that already exists in the table, pressing the delete button or 
  2540.     change button when the name field is a name that does not exist, or 
  2541.     inserting a new name without any balance. 
  2542.  
  2543. 11. When you have finished, close down the Data Window by double clicking on 
  2544.     the system icon. 
  2545.  
  2546. 12. Maximize the Main Window by selecting the large box in the top right hand 
  2547.     corner of the window. 
  2548.  
  2549. 13. Normalize the Main Window by selecting the same button again. 
  2550.  
  2551. 14. Minimize the Main Window by selecting the small box in the top right hand 
  2552.     corner of the window. 
  2553.  
  2554. 15. Surface the Main Window by selecting on the OS/2 desktop with both buttons 
  2555.     of the mouse simultaneously, and from the resultant Window List window, 
  2556.     double click on Main Window. 
  2557.  
  2558. 16. Shut down the application. 
  2559.  
  2560. 17. Finally double click on the system icon on the top left of the MainMake - 
  2561.     Make window to close down the window and answer Yes to the question about 
  2562.     saving your changes. 
  2563.  
  2564.  
  2565. ΓòÉΓòÉΓòÉ 5.14. Summary ΓòÉΓòÉΓòÉ
  2566.  
  2567. You have now built a simple Visualizer application. 
  2568.  
  2569. For more examples of applications, see IBM Visualizer Development for OS/2: 
  2570. Using, SH45-5095. For more information about the ASL language, see IBM 
  2571. Visualizer Development for OS/2: Reference, SH45-5096. 
  2572.  
  2573.  
  2574. ΓòÉΓòÉΓòÉ 6. Visualizer Education Request Form ΓòÉΓòÉΓòÉ
  2575.  
  2576. To receive details on Visualizer Education, please complete this form and mail 
  2577. or fax it to: 
  2578.  
  2579. IBM United Kingdom Limited
  2580. ContactPoint
  2581. Warwick Software Development Laboratory
  2582. PO Box 31, Birmingham Road
  2583. WARWICK
  2584. United Kingdom  CV34 5JL
  2585.  
  2586. Telephone:                    +44 926 464845 
  2587. Fax number:                   +44 926 410764 
  2588. IBM Mail Exchange:            GBIBMNRT at IBMMAIL 
  2589. IBM Internal Network:         MARKET at ASICVM1 
  2590. Bitnet:                       MARKET at VNET 
  2591. Internet:                     market@asicvm1.vnet.ibm.com 
  2592.  
  2593. IBM Corporation
  2594. FAO Mary Crocket
  2595. 1 East Kirkwood Blvd
  2596. Roanoke
  2597. Texas  762 99 0001
  2598. USA
  2599.  
  2600. Telephone:                    +1 817 962 6441 
  2601. Fax number:                   +1 817 962 6005 
  2602. IBM Mail Exchange:            USIB5Z9J at IBMMAIL 
  2603. IBM Internal Network:         JONESSH at MSNVM1 
  2604. Internet:                     jonessh@msnvm1.vnet.ibm.com 
  2605.  
  2606. Query for OS/2                          Procedures for OS/2 
  2607.  
  2608. []  Introductory education              []  Introductory education 
  2609. []  Advanced education                  []  Advanced education 
  2610.  
  2611. Charts for OS/2                         Development for OS/2 
  2612.  
  2613. []  Introductory education              []  Introductory education 
  2614. []  Advanced education                  []  Advanced education 
  2615.  
  2616. Statistics OS/2                         Plans for OS/2 
  2617.  
  2618. []  End-user education                  []  End-user education 
  2619.  
  2620. Other (Please detail your requirements) 
  2621.  
  2622. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  2623. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  2624. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  2625.  
  2626. Name:                Address:
  2627.  
  2628. Company:
  2629.  
  2630. Phone No.:
  2631.  
  2632.  
  2633. ΓòÉΓòÉΓòÉ 7. Visualizer Information Request Form ΓòÉΓòÉΓòÉ
  2634.  
  2635. To receive information about Visualizer products, just call: 
  2636.  
  2637. In U.S.A., 1-800-IBM-CALL, extension 137 
  2638.  
  2639. In Canada, 1-800-465-1234, extension 2002 
  2640.  
  2641. Elsewhere, +44 926 464845 
  2642.  
  2643. Alternatively, complete this form and fax it to: 
  2644.  
  2645. +44 926 499256 
  2646.  
  2647. []  Query for OS/2                 []  Procedures for OS/2 
  2648. []  Charts for OS/2                []  Development for OS/2 
  2649. []  Statistics for OS/2            []  Plans for OS/2 
  2650. []  Ultimedia Query for OS/2 
  2651.  
  2652. Other (Please detail your requirements) 
  2653.  
  2654. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  2655. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  2656. ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  2657.  
  2658. Name:                Address:
  2659.  
  2660. Company:
  2661.  
  2662. Phone No.:
  2663.