home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 30 fixes_v / 30-fixes_v.zip / vx101b.zip / README.INF (.txt) < prev    next >
OS/2 Help File  |  1993-11-26  |  78KB  |  2,424 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Introduction ΓòÉΓòÉΓòÉ
  3.  
  4.  
  5. ΓòÉΓòÉΓòÉ 1.1. Package contents ΓòÉΓòÉΓòÉ
  6.  
  7. We are pleased to forward the enclosed WATCOM VXΓêÖREXX for OS/2 (version 2.0 or 
  8. higher). The package contains the components detailed in the following 
  9. subsections. We recommend that you take time now to identify each of the 
  10. components described. 
  11.  
  12.  
  13. ΓòÉΓòÉΓòÉ 1.1.1. Documentation ΓòÉΓòÉΓòÉ
  14.  
  15. o Read Me First (this document) 
  16.  
  17.   The Read Me First contains the system requirements, installation 
  18.   instructions, notes on the sample programs included with VX-REXX, release 
  19.   information, a new feature summary, and corrections for the printed version 
  20.   of the manual. 
  21.  
  22. o WATCOM VXΓêÖREXX for OS/2 Programmer's Guide and Reference 
  23.  
  24. After reading this Read Me First, you should proceed to the WATCOM VXΓêÖREXX 
  25. Programmer's Guide and Reference. It describes all of the components of the 
  26. VXΓêÖREXX development system and includes a brief tutorial that introduces the 
  27. steps in creating a VXΓêÖREXX program. 
  28.  
  29. The Read Me First and the WATCOM VXΓêÖREXX Programmer's Guide and Reference are 
  30. also supplied as online books. We strongly recommend that you use the online 
  31. books because, in addition to being very convenient, the online books contain 
  32. the most up to date information. The features new in version 1.01 are only 
  33. documented in the online books. 
  34.  
  35.  
  36. ΓòÉΓòÉΓòÉ 1.1.2. Diskettes ΓòÉΓòÉΓòÉ
  37.  
  38. o The package contains two 3.5" diskettes (1.44M). 
  39.  
  40. In addition to the WATCOM VXΓêÖREXX development system, sample programs are 
  41. included which demonstrate some of the features of VXΓêÖREXX. These programs are 
  42. added to the WATCOM VXΓêÖREXX folder when the software is installed. The sample 
  43. programs are described later in this document. 
  44.  
  45.  
  46. ΓòÉΓòÉΓòÉ 1.2. Send in Your Registration Card ΓòÉΓòÉΓòÉ
  47.  
  48. You should fill out and mail your registration card as soon as possible to 
  49. ensure you are informed of future upgrades and other special offers to 
  50. registered users. You must write the product registration number on this card 
  51. in the appropriate box. Your registration number is printed on the label of the 
  52. diskette. Your registration number will be required when you contact WATCOM 
  53. Technical Support. 
  54.  
  55. Note:  Registered users of version 1.01 will be eligible for a free upgrade to 
  56. version 2.00 when it becomes available. Version 2.00 will include four 
  57. additional objects: Container, Notebook, Slider, and ValueSet. 
  58.  
  59.  
  60. ΓòÉΓòÉΓòÉ 1.3. System requirements ΓòÉΓòÉΓòÉ
  61.  
  62. The minimum recommended configuration for WATCOM VXΓêÖREXX is a 20 megahertz 386 
  63. personal computer with 8 megabytes of memory. About 5 megabytes of hard disk 
  64. space are required to install the software. 
  65.  
  66. IBM OS/2 version 2.0 with the OS/2 Service Pak or higher must be installed 
  67. prior to installing VXΓêÖREXX. If you are running OS/2 2.0 without the OS/2 
  68. Service Pak, you must obtain it from IBM and install it to make sure that all 
  69. features of VXΓêÖREXX work correctly. The Service Pak required is IBM number 
  70. XR06055. You can obtain it from the IBM OS/2 BBS, from CompuServe, or directly 
  71. from IBM. Contact your IBM representative for more information. 
  72.  
  73. The OS/2 REXX interpreter and the REXX information must also be installed prior 
  74. to installing VXΓêÖREXX. If you do not have OS/2 REXX installed, you can add it 
  75. now by using the OS/2 Selective Install utility as described in the next 
  76. section. (If REXX is installed on your system your \OS2\DLL directory will 
  77. contain four REXX files: REXX.DLL, REXXAPI.DLL, REXXUTIL.DLL, and REXXINIT.DLL. 
  78. Also your Information folder should contain a REXX Information icon.) 
  79.  
  80.  In addition to using the OS/2 REXX interpreter, VXΓêÖREXX is configured to make 
  81. use of the OS/2 Enhanced Editor. Although it is not required, you may wish to 
  82. install the Enhanced Editor to make sure that you have access to all of 
  83. VXΓêÖREXX's features. Instructions for installing the Enhanced Editor are 
  84. included in the next section. 
  85.  
  86.  
  87. ΓòÉΓòÉΓòÉ 1.3.1. Installing OS/2 system components ΓòÉΓòÉΓòÉ
  88.  
  89. If you do not have the OS/2 REXX interpreter installed on your system, or you 
  90. wish to install the REXX online information or the OS/2 Enhanced Editor, you 
  91. must install them using the Selective Install utility before installing 
  92. VXΓêÖREXX. You will need the OS/2 installation diskettes to complete the 
  93. following procedure. 
  94.  
  95.  1. Open the OS/2 System folder. 
  96.  
  97.  2. Open the System Setup folder. 
  98.  
  99.  3. Open the Selective Install program. 
  100.  
  101.  4. Click on OK in the System Configuration window. 
  102.  
  103.  5. If you need to install the OS/2 REXX interpreter, click on the REXX 
  104.     checkbox. 
  105.  
  106.  6. If you wish to install the REXX online information,  click on the 
  107.     Documentation checkbox. Then click on the corresponding More button to open 
  108.     the Documentation window. Make sure REXX Information is checked, then click 
  109.     on OK. If other check boxes are checked, you can uncheck them by clicking 
  110.     on their respective check boxes. 
  111.  
  112.  7. If you wish to install the OS/2 Enhanced Editor, click on the Tools and 
  113.     Games check box. Then click on the corresponding More button to open the 
  114.     Tools and Games window. Make sure that the Enhanced Editor check box is 
  115.     checked, then click on OK. If other check boxes are checked, you can 
  116.     uncheck them by clicking on their respective check boxes. 
  117.  
  118.  8. Click on Install to start the installation. You will be instructed by the 
  119.     Selective Install program after this point. 
  120.  
  121.  
  122. ΓòÉΓòÉΓòÉ 2. Installation ΓòÉΓòÉΓòÉ
  123.  
  124.  
  125. ΓòÉΓòÉΓòÉ 2.1. Installation procedure for WATCOM VXΓêÖREXX ΓòÉΓòÉΓòÉ
  126.  
  127. The software installation procedure creates a working copy of the WATCOM 
  128. VXΓêÖREXX software on your hard disk. There is a setup program on the first 
  129. diskette that makes the installation easy and straightforward. The installation 
  130. program will create a directory on the hard disk and copy and decompress the 
  131. software from the diskettes to the destination disk. Depending on the speed of 
  132. your computer, the installation procedure can take up to 6 minutes. 
  133.  
  134.  
  135. ΓòÉΓòÉΓòÉ 2.2. Running the installation program ΓòÉΓòÉΓòÉ
  136.  
  137. The first VXΓêÖREXX diskette contains a program called SETUP.EXE which installs 
  138. the software. 
  139.  
  140. By default, the software will be installed from the A diskette drive into the 
  141. directory \VXREXX on the hard disk with the OS/2 system installed, but you can 
  142. change these values. Note that the rest of this document assumes that the 
  143. VXΓêÖREXX directory is C:\VXREXX. If you choose another drive or directory, then 
  144. substitute your chosen install location for C:\VXREXX in the instructions that 
  145. follow. 
  146.  
  147. The software takes up approximately 5 megabytes of disk space. The installation 
  148. program will ensure that there is enough free disk space before starting the 
  149. actual installation. If there is insufficient free space, you will have to 
  150. delete some files from your disk and restart the installation. 
  151.  
  152. If you already have a version of VX-REXX installed on your machine you must 
  153. ensure that it is not in use before installing the new version. You must ensure 
  154. that you are running neither VX-REXX nor a VX-REXX program or macro. 
  155.  
  156. If you are upgrading VX-REXX we strongly recommend that you install the new 
  157. version of VX-REXX in the same directory as the previous version. The 
  158. installation will upgrade all the VX-REXX files but will leave the Projects 
  159. directory and any projects it contains intact. 
  160.  
  161. Note:  Only one version of VX-REXX can be running at one time. This includes 
  162. either VX-REXX itself or any VX-REXX program or macro. However, all VX-REXX 
  163. programs and macros created with earlier versions of VX-REXX will run with the 
  164. current version without change. It is not necessary to regenerate either EXE or 
  165. macro files. 
  166.  
  167. To install VX-REXX: 
  168.  
  169.  1. Open the OS/2 System folder. 
  170.  
  171.  2. Open the Command Prompts folder. 
  172.  
  173.  3. Open an OS/2 Window. 
  174.  
  175.  4. Insert the first WATCOM VXΓêÖREXX diskette in a diskette drive (e.g. the A 
  176.     drive). 
  177.  
  178.  5. From the OS/2 command line, type: a:\setup. 
  179.  
  180. You will be asked for the drive and directory in which you want to install 
  181. VXΓêÖREXX. You can change the default values to any valid drive and directory. 
  182. The directory will be created when the software is installed. You will also be 
  183. prompted for the location of the install diskettes. The default value will be 
  184. the diskette from which you started the install. Normally you should just 
  185. accept the default. 
  186.  
  187. After you have completed these dialogs, the setup program will decompress the 
  188. software and copy it to the hard disk. Part way through the installation, you 
  189. will be asked to insert disk two. Remove the first diskette from the drive, and 
  190. insert the second VXΓêÖREXX diskette. Select OK on the prompt dialog to continue 
  191. the installation. When the files have been copied, you will be asked if you 
  192. want your CONFIG.SYS updated. If you select this option, your CONFIG.SYS file 
  193. will be copied to CONFIG.BAK and then it will be updated so that the PATH, 
  194. LIBPATH, HELP and BOOKSHELF variables include the VXΓêÖREXX directory. It will 
  195. also create a VXREXX variable set to the VXΓêÖREXX directory. Note that you must 
  196. shutdown and restart OS/2 for changes to your CONFIG.SYS file to take effect. 
  197.  
  198. VXΓêÖREXX will not function properly unless you update your CONFIG.SYS. You must 
  199. update your CONFIG.SYS yourself if you do not let the install program do it. 
  200. Adding the VXΓêÖREXX directory to the PATH allows you to start VXΓêÖREXX from an 
  201. OS/2 command line. The LIBPATH must be updated to run the executable and macro 
  202. files generated by VXΓêÖREXX. The HELP and BOOKSHELF variables must be updated to 
  203. access the VXΓêÖREXX context sensitive help. 
  204.  
  205. When the installation is complete, you will be asked if you want to view the 
  206. Read Me First information. The information displayed is the information from 
  207. this Read Me First booklet, plus any information added after this booklet was 
  208. printed. (Any extra information will be in a chapter entitled Latest Updates). 
  209.  
  210. You will then be returned to the OS/2 command line. Type exit to close the OS/2 
  211. window. 
  212.  
  213. A WATCOM VXΓêÖREXX icon will be displayed on your desktop. Open the folder to 
  214. view the VXΓêÖREXX components. 
  215.  
  216.  
  217. ΓòÉΓòÉΓòÉ 2.3. WATCOM VXΓêÖREXX folder contents ΓòÉΓòÉΓòÉ
  218.  
  219. After WATCOM VXΓêÖREXX has been successfully installed on a hard disk, the 
  220. VXΓêÖREXX folder will contain several icons. This section describes each of the 
  221. icons. 
  222.  
  223. Note that the WATCOM VXΓêÖREXX folder on your desktop only contains objects that 
  224. reference files in the VXΓêÖREXX directory. Deleting or moving this folder does 
  225. not delete or move the VXΓêÖREXX directory. If you accidentally delete the WATCOM 
  226. VXΓêÖREXX folder, you can rebuild it with the BUILDVRX command which is described 
  227. later. 
  228.  
  229.  
  230. ΓòÉΓòÉΓòÉ 2.3.1. VXΓêÖREXX ΓòÉΓòÉΓòÉ
  231.  
  232. You can use the VXΓêÖREXX icon to open the VXΓêÖREXX development environment, 
  233. although usually you will open VXΓêÖREXX by opening a VXΓêÖREXX Project object. See 
  234. the section on  the Projects folder for more information. 
  235.  
  236.  
  237. ΓòÉΓòÉΓòÉ 2.3.2. Read Me First ΓòÉΓòÉΓòÉ
  238.  
  239. Read Me First is an online version of this Read Me First booklet, with four 
  240. additional sections: Tips, Restrictions, Fixes in version 1.01, and Latest 
  241. updates. The Latest updates section will contain any information released too 
  242. late to be put in this document. 
  243.  
  244.  
  245. ΓòÉΓòÉΓòÉ 2.3.3. Programmer's Guide ΓòÉΓòÉΓòÉ
  246.  
  247. Programmer's Guide is an online copy of the Programmer's Guide section of the 
  248. WATCOM VXΓêÖREXX for OS/2 Programmer's Guide and Reference. You can read this 
  249. documentation to learn how to use VXΓêÖREXX and create VXΓêÖREXX applications. You 
  250. can also use the chapter A simple program as an online tutorial, actually 
  251. building the program in the VXΓêÖREXX development environment as you read through 
  252. the chapter. 
  253.  
  254. You should work through the tutorial before trying to create your own project. 
  255. It shows you how to examine the code and how to run a VXΓêÖREXX program. If you 
  256. need more information, the techniques outlined in the tutorial are expanded in 
  257. the first four chapters of the Programmer's Guide. 
  258.  
  259. The online Programmer's Guide contains new information for version 1.01. The 
  260. chapter A simple program has been updated to use drag and drop programming. 
  261. The chapter Using objects includes a section on using the new SpinButton 
  262. control. 
  263.  
  264.  
  265. ΓòÉΓòÉΓòÉ 2.3.4. Reference ΓòÉΓòÉΓòÉ
  266.  
  267. Reference is an online copy of the Reference section of the WATCOM VXΓêÖREXX for 
  268. OS/2 Programmer's Guide and Reference. Use this documentation to get detailed 
  269. information on any component  of the VXΓêÖREXX development system. 
  270.  
  271. The online Reference contains new information for version 1.01. It includes the 
  272. new SpinButton control, as well as up to date information for all of the new 
  273. version 1.01 features. 
  274.  
  275.  
  276. ΓòÉΓòÉΓòÉ 2.3.5. REXX Information ΓòÉΓòÉΓòÉ
  277.  
  278. REXX Information points to the online REXX language documentation which is 
  279. contained in the OS/2 Information folder. You can browse this information to 
  280. learn about the REXX language and the OS/2 REXX interpreter. 
  281.  
  282.  
  283. ΓòÉΓòÉΓòÉ 2.3.6. Samples ΓòÉΓòÉΓòÉ
  284.  
  285. This folder contains icons for the VXΓêÖREXX sample programs: Button, Calc, 
  286. HintHelp, MindGame, Movies, MMW, SampleDB, Scan, Threads, and WinCtrl. These 
  287. icons are shadows of directories in the VXΓêÖREXX directory. 
  288.  
  289. Each of the samples is a folder which contain the source files for the project, 
  290. as well as an icon to run the program, and a folder called BIN. This folder 
  291. contains the executable and macro versions (if any) of the program. 
  292.  
  293. To run these sample programs, the LIBPATH and HELP environment variables must 
  294. include the VXΓêÖREXX directory. 
  295.  
  296. The sample programs are described in the next chapter. 
  297.  
  298.  
  299. ΓòÉΓòÉΓòÉ 2.3.7. Projects ΓòÉΓòÉΓòÉ
  300.  
  301. The Projects folder contains the VXΓêÖREXX Project template. You use this 
  302. template to create new VXΓêÖREXX projects. Simply drag the template to the folder 
  303. in which you want to store the new project files. Open the VXΓêÖREXX Project 
  304. folder that is created, and open the  Project.VRP file to start VXΓêÖREXX with 
  305. the new project. 
  306.  
  307. The Projects folder is a shadow of the directory of the same name in the 
  308. VXΓêÖREXX directory. You can use this folder to safely store your projects as 
  309. they will remain intact even if the WATCOM VXΓêÖREXX folder is accidentally 
  310. deleted. 
  311.  
  312.  
  313. ΓòÉΓòÉΓòÉ 2.3.8. Macros ΓòÉΓòÉΓòÉ
  314.  
  315. The Macros folder contains sample VX-REXX design-time macros, and information 
  316. on developing you own macros. VX-REXX design-time macros allow you to customize 
  317. the design environment by adding new commands to the VX-REXX pop-up menu. 
  318.  
  319. Four sample macros are provided: SetTabs (set the tab order), SetProps (another 
  320. way to set properties), Resize (force objects to the same size), and ObjList 
  321. (list all objects on a window). The source for these macros is included so you 
  322. can modify and adapt them to suit your own needs. 
  323.  
  324. Information on the sample macros and the installation instructions is included 
  325. in the Profile.VRM file located in the Macros folder. Details on writing your 
  326. own macros are contained in the Macros.TXT file also located in the Macros 
  327. folder. 
  328.  
  329. The Macros folder is a shadow of the directory of the same name in the VXΓêÖREXX 
  330. directory. You can use this folder to safely store your macros as they will 
  331. remain intact even if the WATCOM VXΓêÖREXX folder is accidentally deleted. 
  332.  
  333.  
  334. ΓòÉΓòÉΓòÉ 2.3.9. Color Palette ΓòÉΓòÉΓòÉ
  335.  
  336. The VXΓêÖREXX installation program creates a color palette Workplace Shell object 
  337. in the VXΓêÖREXX folder. You can use the palette to drag and drop colors onto 
  338. VXΓêÖREXX objects as an alternative to setting colors using a property notebook. 
  339.  
  340.  
  341. ΓòÉΓòÉΓòÉ 2.3.10. Font Palette ΓòÉΓòÉΓòÉ
  342.  
  343. The VXΓêÖREXX installation program creates a font palette Workplace Shell object 
  344. in the VXΓêÖREXX folder. You can use the palette to drag and drop fonts onto 
  345. VXΓêÖREXX objects as an alternative to setting fonts using a property notebook. 
  346.  
  347.  
  348. ΓòÉΓòÉΓòÉ 2.4. WATCOM VXΓêÖREXX directory contents ΓòÉΓòÉΓòÉ
  349.  
  350. In addition to the files and directories comprising the VX-REXX design 
  351. environment, the VXΓêÖREXX directory contains the following files. 
  352.  
  353.  
  354. ΓòÉΓòÉΓòÉ 2.4.1. BUILDVRX.CMD ΓòÉΓòÉΓòÉ
  355.  
  356. This REXX script rebuilds the Workplace Shell objects for VXΓêÖREXX. If you 
  357. accidentally delete your WATCOM VXΓêÖREXX folder, or if your desktop becomes 
  358. corrupted, you can run this command file from an OS/2 Window. 
  359.  
  360.  
  361. ΓòÉΓòÉΓòÉ 2.4.2. BPATCH.EXE ΓòÉΓòÉΓòÉ
  362.  
  363. The WATCOM Patch Utility can be used to apply patches or bug fixes to VXΓêÖREXX. 
  364. As problems are reported and fixed, registered users of VXΓêÖREXX will be 
  365. notified of patches that they can apply to resolve these problems. 
  366.  
  367.  
  368. ΓòÉΓòÉΓòÉ 2.5. Run time library ΓòÉΓòÉΓòÉ
  369.  
  370. The executable (EXE) and macro files built with VXΓêÖREXX require the run time 
  371. library VROBJ.DLL to run. The OS/2 LIBPATH variable must include the directory 
  372. that contains VROBJ.DLL. The LIBPATH variable is defined in the OS/2 CONFIG.SYS 
  373. file. Note that you must reboot OS/2 before any changes to the LIBPATH will 
  374. take effect. 
  375.  
  376.  
  377. ΓòÉΓòÉΓòÉ 2.5.1. Additional redistribution rights ΓòÉΓòÉΓòÉ
  378.  
  379. Subject to the terms and conditions of the WATCOM Software License Agreement, 
  380. in addition to any Redistribution Rights granted therein, you are hereby 
  381. granted a non-exclusive, royalty-free right to reproduce and distribute the 
  382. file VROBJ.DLL located in the VXΓêÖREXX directory provided that (a) it is 
  383. distributed as part of and only with your software product; (b) you not 
  384. suppress, alter or remove proprietary rights notices contained therein; and (c) 
  385. you indemnify, hold harmless and defend WATCOM and its suppliers from and 
  386. against any claims or lawsuits, including attorney's fees, that arise or result 
  387. from the use or distribution of your software product. 
  388.  
  389.  
  390. ΓòÉΓòÉΓòÉ 3. Sample programs ΓòÉΓòÉΓòÉ
  391.  
  392. Each of the following sections describes one of the sample programs included 
  393. with VXΓêÖREXX. The files for these programs are located in the Samples 
  394. directory, which is in the VXΓêÖREXX directory. The WATCOM VXΓêÖREXX folder 
  395. contains a shadow of the Samples directory. 
  396.  
  397.  
  398. ΓòÉΓòÉΓòÉ 3.1. Button ΓòÉΓòÉΓòÉ
  399.  
  400. The Button program displays four push buttons with the  caption "Push Me!". 
  401. When you run this program and click on any of the buttons, the button's color 
  402. and caption changes to Red. When it is clicked again, the color and caption 
  403. changes to Yellow. If you continue to click on a button, it will alternate 
  404. between red and yellow. 
  405.  
  406. The program is similar to the one developed in the tutorial chapter A Simple 
  407. Program in the Programmer's Guide. It demonstrates the two VXΓêÖREXX functions 
  408. that you use to access object properties at run time. 
  409.  
  410. To run the program, double click on the Button icon. To edit the project, 
  411. double click on the Button.VRP icon. 
  412.  
  413.  
  414. ΓòÉΓòÉΓòÉ 3.2. Calc ΓòÉΓòÉΓòÉ
  415.  
  416. Calc is a simple calculator program. It does addition, subtraction, 
  417. multiplication, division, and percentages. The buttons CE and C clear the 
  418. current entry and the current calculation, respectively. Memory buttons are 
  419. provided to save (M+ and M-), recall (MR) and clear (MC) calculations. 
  420.  
  421. The program illustrates using general routines for code that is used by many 
  422. objects and shows how to pass arguments to a REXX routine. 
  423.  
  424. The calculator sample also demonstrates the use of the KeyPress event and 
  425. KeyString property. Instead of using the mouse to click on the calculator 
  426. buttons you can just type the calculator operations on the keyboard. The C 
  427. button is accessed using the letter C on the keyboard, the CE button through 
  428. the letter E on the keyboard, and the memory functions by pressing F5-F8 on the 
  429. keyboard for M+, M-, MR, and MC  respectively. 
  430.  
  431. To run this program, double click on the Calculator icon in the Calc folder. To 
  432. edit the project, double click on the Calc.VRP icon. 
  433.  
  434.  
  435. ΓòÉΓòÉΓòÉ 3.3. HintHelp ΓòÉΓòÉΓòÉ
  436.  
  437. The HintHelp sample program demonstrates the use of hints and context sensitive 
  438. help in VXΓêÖREXX projects. When the program is running, move the pointer over 
  439. each of the objects in the window to view the hints for each. The hints appear 
  440. in the status area in the bottom of the window. Press the F1 key to open a help 
  441. window. 
  442.  
  443. To run this program, double click on the Hint and Help icon in the HintHelp 
  444. folder. To edit the project, double click on the HintHelp.VRP icon. 
  445.  
  446.  
  447. ΓòÉΓòÉΓòÉ 3.4. MindGame ΓòÉΓòÉΓòÉ
  448.  
  449. MindGame is a game in which you must guess the colors of four buttons in ten 
  450. guesses or less. When it is run, the buttons for the first guess are located 
  451. above the horizontal bar at the bottom left hand corner of the window. To 
  452. begin, choose a color from the color palette at the top right hand corner of 
  453. the window. The currently selected color is shown in the large colored button 
  454. to the right the color palette. When you have chosen a color, click on the 
  455. button to which you want to assign the color. When you have chosen colors for 
  456. all four  buttons, click on Guess. An X is displayed for each button for which 
  457. the color is correct. An O indicates that a correct color is chosen but it is 
  458. not assigned to the correct button. You continue guessing until you guess 
  459. correctly or complete ten tries. The New item in the Game menu starts a new 
  460. game. The Peek item lets you see the correct solution. The About item in the 
  461. Help menu shows copyright information. 
  462.  
  463. This program shows how to add a dialog to a program (the About dialog) and how 
  464. to use VXΓêÖREXX predefined functions (VRMessage). It also illustrates using 
  465. general routines for code that is used by many objects and shows how to pass 
  466. arguments to a REXX routine. It shows some of the features of the REXX language 
  467. such as program control statements (do and if) and how to use REXX stem 
  468. variables as arrays to simplify programming. MindGame also demonstrates the use 
  469. of menus. 
  470.  
  471. To run this program, double click on the Mind Game icon in the MindGame folder. 
  472. To edit the project, double click on the MindGame.VRP icon. 
  473.  
  474.  
  475. ΓòÉΓòÉΓòÉ 3.5. MMW ΓòÉΓòÉΓòÉ
  476.  
  477. The MMW sample program demonstrates the difference between modal and modeless 
  478. windows. It allows you to open both modeless and modal windows, and explains at 
  479. each step how you should proceed. 
  480.  
  481. To run this program, double click on the MMW icon in the MMW folder. To edit 
  482. the project, double click on the MMW.VRP icon. 
  483.  
  484.  
  485. ΓòÉΓòÉΓòÉ 3.6. Movies ΓòÉΓòÉΓòÉ
  486.  
  487. The Movies sample program demonstrates the use of VXΓêÖREXX with the multimedia 
  488. extensions to OS/2. You will require the IBM Multimedia Presentation Manager/2 
  489. software to run this sample. This software is included in OS/2 2.1 but is 
  490. installed separately. 
  491.  
  492. This sample allows you to play movies, either in the main thread, or as part of 
  493. a separate thread, allowing you to continue working in  the current thread. 
  494.  
  495. To run this program, double click on the Multimedia icon in the Movies folder. 
  496. To edit the project, double click on the Movies.VRP icon. 
  497.  
  498.  
  499. ΓòÉΓòÉΓòÉ 3.7. Scan ΓòÉΓòÉΓòÉ
  500.  
  501. In this sample, VXΓêÖREXX is used to create a REXX macro that can be run with the 
  502. OS/2 Enhanced Editor (EPM). When run from EPM, the Scan macro searches the 
  503. current file for all REXX labels (with format labelname:) and displays the 
  504. labels in a list box. If you double click on a label in the list box, that 
  505. label becomes the current line in the editor. 
  506.  
  507. The sample program was created with VXΓêÖREXX. The macro was created using Make 
  508. macro from the VXΓêÖREXX Project menu. 
  509.  
  510. To start the macro, open the EPM with Scan object in the Scan folder. 
  511. Alternatively, you can run the macro from within EPM by doing the following: 
  512.  
  513.  1. Press Ctrl+I or choose Command dialog from the Command menu. 
  514.  
  515.  2. Type the following in the entry field: 
  516.  
  517.    rx c:\vxrexx\samples\scan\bin\scan 
  518.  
  519. The Scan folder also includes a Profile.ERX file that will add a menu to EPM 
  520. which can be used to run the macro. To use the profile: 
  521.  
  522.  1. Open EPM. 
  523.  
  524.  2. Select Command dialog from the Command menu. 
  525.  
  526.  3. Enter Profile on and select OK in the Command dialog. 
  527.  
  528.  4. Select Save options from the Options menu. 
  529.  
  530.  5. Close EPM. 
  531.  
  532. Now when you double click on the EPM with Scan icon and select a label, EPM 
  533. should include a Labels menu. Selecting Find from this menu will run the sample 
  534. macro. 
  535.  
  536. To edit the project, double click on the Scan.VRP icon. 
  537.  
  538.  
  539. ΓòÉΓòÉΓòÉ 3.8. SampleDB ΓòÉΓòÉΓòÉ
  540.  
  541. The SampleDB application demonstrates the use of VXΓêÖREXX with either Database 2 
  542. OS/2 (DB2/2) or Extended Services for OS/2 Database Manager. SampleDB accesses 
  543. the Database Manager sample database using the Database Manager REXX API 
  544. (Application Programming Interface). You are provided with a simple interface 
  545. to view the records in this sample database. Click on the Search button to 
  546. display the first record, and then click on Next to view each subsequent 
  547. record. 
  548.  
  549. Clicking on Clear closes the database. You can quit the program at any time by 
  550. clicking on the Exit button. 
  551.  
  552. For more information about this sample program, and about using VXΓêÖREXX with 
  553. the Database Manager, refer to the chapter entitled Database Manager with 
  554. VXΓêÖREXX in the Programmer's Guide. 
  555.  
  556. Running this sample program requires that you have either Database 2 OS/2 or 
  557. the older Extended Services for OS/2. These are a separate products, and are 
  558. not included with either VXΓêÖREXX or the OS/2 system. If you do have either of 
  559. these database packages, make sure that you have installed the sample database 
  560. provided with the Database Manager. 
  561.  
  562. To run this program, double click on the Sample Database icon in the SampleDB 
  563. folder. To edit the project, double click on the SampleDB.VRP icon. 
  564.  
  565.  
  566. ΓòÉΓòÉΓòÉ 3.9. Threads ΓòÉΓòÉΓòÉ
  567.  
  568. The Threads sample program demonstrates VXΓêÖREXX's ability to create 
  569. multithreaded applications. This feature allows you to write applications which 
  570. perform lengthy operations in the background. For example, an application could 
  571. allow the user to continue to work in the main window while saving files in the 
  572. background. The main window would be one thread, and the part of the program 
  573. saving the files would be another thread. 
  574.  
  575. This sample allows you to create threads by clicking on the Spawn New Thread 
  576. button. A new window is opened into which you can enter text. Clicking on the 
  577. Send to parent button then sends the text to the main window, where it is 
  578. displayed in a list box. 
  579.  
  580. You can also stop the new threads that you create by selecting a thread number, 
  581. then clicking on the Halt Selected Thread button. 
  582.  
  583. To run this program, double click on the Threads icon in the Threads folder. To 
  584. edit the project, double click on the Threads.VRP icon. 
  585.  
  586.  
  587. ΓòÉΓòÉΓòÉ 3.10. WinCtrl ΓòÉΓòÉΓòÉ
  588.  
  589. The WinCtrl demo illustrates the use of the ListWindows method and PM window 
  590. handles. The program lists all of the top level frame windows that are 
  591. currently visible on the desktop. After selecting windows in the program's list 
  592. box, you can then minimize, restore, or shake them. 
  593.  
  594.  
  595. ΓòÉΓòÉΓòÉ 4. Release information ΓòÉΓòÉΓòÉ
  596.  
  597.  
  598. ΓòÉΓòÉΓòÉ 4.1. Online information ΓòÉΓòÉΓòÉ
  599.  
  600. The most up-to-date information on VXΓêÖREXX is available online. Both this Read 
  601. Me First and the Programmer's Guide and Reference are available online. The 
  602. most recent information is in the Latest Updates section of the online Read Me 
  603. First. The online Programmer's Guide and Reference contains all of the changes 
  604. noted in this document. 
  605.  
  606. In addition to online books, full context sensitive help is available within 
  607. the VXΓêÖREXX development environment. Simply activate the VXΓêÖREXX window by 
  608. clicking on it, and press the F1 key. A help window will appear, with general 
  609. information about the VXΓêÖREXX development environment. You can also access help 
  610. for VXΓêÖREXX from its Help menu. For more specific help  on any of VXΓêÖREXX's 
  611. menu choices use the cursor keys to choose a menu item, or hold down mouse 
  612. button 1 on the menu item, and press F1. 
  613.  
  614. In addition, the context help is linked to the full text of the Programmer's 
  615. Guide and Reference. To access help on an object, for example, click on the 
  616. object in the tool palette and press F1. A help window will open with a short 
  617. description of the object. Within the description the object name will appear 
  618. with special highlighting. Double click on this field to see the complete 
  619. reference entry for that object. 
  620.  
  621. Similarly, the reference entry for any event, function, method, object, 
  622. predefined routine or property can be quickly obtained by using the help index. 
  623. Open a VXΓêÖREXX help window by clicking on a VXΓêÖREXX window and pressing F1. 
  624. Open the help index by clicking on the Index button within the help window. 
  625. Select the appropriate topic from the beginning of the index list, for example 
  626. A list of functions. This will bring you to a list of items, each of which has 
  627. special highlighting. Double click on the item of interest to see its reference 
  628. entry. 
  629.  
  630.  
  631. ΓòÉΓòÉΓòÉ 4.2. Workplace Shell integration ΓòÉΓòÉΓòÉ
  632.  
  633. VXΓêÖREXX has been integrated into the Workplace Shell to allow you to take full 
  634. advantage of the OS/2 environment. The following highlights some of the 
  635. features related to the Workplace Shell. 
  636.  
  637. o Create new projects by dragging and dropping a project template 
  638.  
  639.   The Projects folder in the WATCOM VXΓêÖREXX folder contains a VXΓêÖREXX Project 
  640.   template. Drag and drop this template to create a new project folder. Open 
  641.   the folder and double click on the Project.VRP icon to edit the project. You 
  642.   can also open projects by dropping the project (VRP) file on the VXΓêÖREXX icon 
  643.   contained in the WATCOM VXΓêÖREXX folder. 
  644.  
  645.   See Creating and running projects in the Programmer's Guide. 
  646.  
  647. o Edit VXΓêÖREXX objects using Workplace Shell techniques 
  648.  
  649.    - Use mouse button 1 to select and resize objects. Both marquee and swipe 
  650.      selection are supported. 
  651.  
  652.    - Use mouse button 2 to move objects and to open their pop-up menus. 
  653.  
  654.    - Directly modify objects using their property notebooks. You can open a 
  655.      property notebook either by using an object's pop-up menu or by double 
  656.      clicking on the object. 
  657.  
  658.    - Drag and drop fonts and colors from the Workplace Shell font and color 
  659.      palettes. You can drag fonts and colors from these palettes onto VXΓêÖREXX 
  660.      objects to set their font and color properties. 
  661.  
  662.      Note that to set the foreground color on an object, press and hold the 
  663.      Ctrl key while dragging and dropping the color,  otherwise the background 
  664.      color will be set. 
  665.  
  666.      See Adding objects to a window and Changing object properties in the 
  667.      Programmer's Guide. 
  668.  
  669. o Write code using drag and drop programming 
  670.  
  671.   Using the VX-REXX drag and drop programming feature entire programs can be 
  672.   written without typing a line of code. For example, to create code to get the 
  673.   value of an entry field you simply drag the entry field and drop it on the 
  674.   editor where the code is to be inserted. Then you select the Value property 
  675.   from a list, click OK, and the code is inserted, complete with the name of 
  676.   the entry field. 
  677.  
  678.   You can also insert code directly using the Insert code item in the section 
  679.   editor's Edit menu, and you can configure VX-REXX to copy the generated code 
  680.   to the OS/2 clipboard so you can use this feature with external editors. 
  681.  
  682.   See the next section, New features in version 1.01. 
  683.  
  684. o Assign icons to your programs. 
  685.  
  686.   Icons can be assigned to VXΓêÖREXX executables (EXE) programs using the General 
  687.   page of the program's Settings notebook. You can also set the icon by placing 
  688.   an icon (ICO) file with the same name as the program in the same directory as 
  689.   the program. 
  690.  
  691.   Once assigned, a program's icon is used within the Workplace Shell to 
  692.   represent the program. It is also used when the program is running as the 
  693.   title bar icon, and as the icon used to represent a minimized window. 
  694.  
  695. o Provide context sensitive help and status information. 
  696.  
  697.   VXΓêÖREXX objects include properties that you can use to provide help and 
  698.   status information (hints) to your users. The help, either a simple text 
  699.   window or an OS/2 Information Presentation Facility help panel, is 
  700.   automatically displayed when your user presses F1. Hints are automatically 
  701.   displayed in the status area whenever an object has the focus or the pointer 
  702.   is moved over an object. 
  703.  
  704.   See Adding help to a program in the Programmer's Guide. 
  705.  
  706. o Create programs with multiple threads. 
  707.  
  708.   Every VXΓêÖREXX program contains multiple threads. This means your program will 
  709.   not freeze the system while it performs long calculations. You can also 
  710.   create and control threads within your own program so you can optimize your 
  711.   use of the computer. 
  712.  
  713.   See StartThread method in the online Reference. 
  714.  
  715. o Respond to Window List and ShutDown messages. 
  716.  
  717.   Your users can halt your programs using the OS/2 Window List or by shutting 
  718.   down OS/2 -- even when your program is performing long calculations. You can 
  719.   provide code to ensure your application shuts down gracefully when 
  720.   interrupted, so for example, you can give your users a chance to save or 
  721.   discard their data when OS/2 is shut down. 
  722.  
  723.   See Halt section in the online Reference. 
  724.  
  725. o List, control, and send keys to PM windows. 
  726.  
  727.   You can write programs that list and control windows on the OS/2 desktop. You 
  728.   can get and set their caption, position and size, and z-order, as well as 
  729.   enable, disable, minimize, maximize, and restore them. 
  730.  
  731.   See ListWindows method and HWnd property in the Reference. 
  732.  
  733.  
  734. ΓòÉΓòÉΓòÉ 5. New features in version 1.01B ΓòÉΓòÉΓòÉ
  735.  
  736.  
  737. ΓòÉΓòÉΓòÉ 5.1. New design environment features ΓòÉΓòÉΓòÉ
  738.  
  739.  
  740. ΓòÉΓòÉΓòÉ 5.1.1. Version checking on projects ΓòÉΓòÉΓòÉ
  741.  
  742. If you try to load a project that was created with a later version of VX-REXX, 
  743. you now get a warning, asking if you want to try to load the project anyway. If 
  744. the project does not contain any new objects, you may be able to edit the 
  745. project. 
  746.  
  747.  
  748. ΓòÉΓòÉΓòÉ 5.2. New run time features ΓòÉΓòÉΓòÉ
  749.  
  750.  
  751. ΓòÉΓòÉΓòÉ 5.2.1. Improved support for controlling other applications ΓòÉΓòÉΓòÉ
  752.  
  753. o Getting your process ID 
  754.  
  755.     pid = VRMethod( "Application", "GetProcessID" )
  756.  
  757.   You can now get your application's process identifier using the new 
  758.   GetProcessID method. You can use this in conjunction with the ListWindows 
  759.   method to determine which windows are part of your application. 
  760.  
  761. o Finding the active window 
  762.  
  763.     pmWindowHandle = VRMethod( "Screen", "GetActiveWindow" )
  764.  
  765.   The Screen object has a new method, GetActiveWindow, which returns the 
  766.   Presentation Manager (PM) window handle of the currently active window. 
  767.  
  768.   Use this method when writing application macros in VX-REXX to get the PM 
  769.   window handle of the application window. You can then set the new FrameOwner 
  770.   property of the VX-REXX window to be the application window to make sure that 
  771.   the VX-REXX window is minimized, maximized, and restored along with the 
  772.   application window. 
  773.  
  774. o Finding the focus window 
  775.  
  776.     pmWindowHandle = VRMethod( "Screen", "GetFocusWindow" )
  777.  
  778.   The new GetFocusWindow method of the Screen object returns the PM window 
  779.   handle of the window that currently has the focus. 
  780.  
  781. o Improved ListWindows method 
  782.  
  783.     ok = VRMethod( "Screen", "ListWindows", "windows.", ["ALL"] )
  784.  
  785.   The ListWindows method now optionally lists all top level windows, not just 
  786.   the frame windows. As a result, you can now write programs that can walk the 
  787.   entire PM window tree. a top level window is one whose parent is the OS/2 
  788.   desktop window. 
  789.  
  790. o Improved SendKeyString method 
  791.  
  792.   If you omit the destination object parameter to the SendKeyString method, the 
  793.   keys are sent to the object that currently has the focus. This means you can 
  794.   send keys to windows in other applications without figuring out which window 
  795.   to sent them to. 
  796.  
  797. o Setting the focus to any PM window 
  798.  
  799.   You can now use the SetFocus method on any PM window handle returned by 
  800.   ListWindows. 
  801.  
  802. o Referring to the desktop and root object windows 
  803.  
  804.   You can now refer to the desktop window itself using the special PM window 
  805.   handle "?HWND1". Similarly, to refer to the root object window, use the 
  806.   predefined PM window handle "?HWND2". 
  807.  
  808.  
  809. ΓòÉΓòÉΓòÉ 5.2.2. Improved control over windows ΓòÉΓòÉΓòÉ
  810.  
  811. o Minimized / maximized state 
  812.  
  813.   You can now tell whether one of your VX-REXX application's windows has been 
  814.   minimized or maximized. Windows now have a WindowState property which 
  815.   reflects the current window state. You can also set this property to 
  816.   minimize, maximize, or restore a window. The following are valid values for 
  817.   the property: 
  818.  
  819.    Minimized      The window is maximized. 
  820.  
  821.    Maximized      The window is minimized. 
  822.  
  823.    Normal         The window is neither maximized or minimized. 
  824.  
  825. o Setting the PM owner for a window 
  826.  
  827.   Now when you write VX-REXX macros for other applications, the macro's windows 
  828.   can be minimized, maximized, or restored along with the application's 
  829.   windows. To do this, you set the new FrameOwner property of a VX-REXX window 
  830.   to the PM window handle of the application window. 
  831.  
  832.   Use this method when writing application macros to set the owner of your 
  833.   macro's window to be the application's window. Use the GetActiveWindow method 
  834.   in the Init section of your macro to get the PM window handle of the 
  835.   application window. Then set the macro window's FrameOwner property to the 
  836.   handle of the application window. 
  837.  
  838.   The window assigned to the FrameOwner property must be in the same process as 
  839.   the VX-REXX macro. 
  840.  
  841.  
  842. ΓòÉΓòÉΓòÉ 5.2.3. Improved combo boxes and drop down combo boxes ΓòÉΓòÉΓòÉ
  843.  
  844. Combo boxes (and drop down combo boxes) are combinations of entry fields and 
  845. list boxes. Previously, combo boxes had a subset of the properties of entry 
  846. fields and list boxes. Now, they have most of the combined properties. The 
  847. following combo box properties are new to version 1.01B: HorizScroll, Selected, 
  848. SelectedString, SelectedStart, SelectedEnd, SelectedText, and TextLimit. 
  849.  
  850. Note that the Value property reflects the contents of the entry field portion 
  851. of a combo box. The Selected and SelectedText indicate the selected item in the 
  852. list box portion. If you are responding to a Click event, you should use the 
  853. Selected and SelectedText properties to find out what the user clicked on (the 
  854. Value property may not hold the new value when the Click event is processed). 
  855. Similarly, when responding to a Change event, examine the Value property 
  856. because the Selected and SelectedText properties may not have been updated yet. 
  857.  
  858.  
  859. ΓòÉΓòÉΓòÉ 5.2.4. Improved version checking for generated executables ΓòÉΓòÉΓòÉ
  860.  
  861. If you try to run an EXE file generated by a newer version of VX-REXX, it will 
  862. display a dialog which tells you the version it requires. You are given the 
  863. option of trying to run it anyway, or quitting. 
  864.  
  865.  
  866. ΓòÉΓòÉΓòÉ 5.2.5. Getting printer information ΓòÉΓòÉΓòÉ
  867.  
  868. ok = VRMethod( "Application", "ListPrinters", "printer."
  869.  
  870. You can now get the list of installed printers on your system by using the new 
  871. ListPrinters method of the Application object. The method returns the queue 
  872. name, the physical name, and the driver name for each printer. 
  873.  
  874. The method fills the compound variable printer. with the list of all printer 
  875. objects available on the system. After returning, printer.0 contains the number 
  876. of printers in the list. printer.1 holds information about the first printer, 
  877. printer.2 holds information about the second printer, and so on. If there are 
  878. no printers installed, printer.0 will be zero. 
  879.  
  880. The method returns 1 if successful, 0 if there was some error. 
  881.  
  882. The format of the strings returned is: 
  883.  
  884. queueName;physicalName;driverName
  885.  
  886. The following example displays a list of printers: 
  887.  
  888. ok = VRMethod( "Application", "ListPrinters", "printer." )
  889. if ok = 1 then do
  890.     do i = 1 to printer.0
  891.         say printer.i
  892.     end
  893. end
  894.  
  895.  
  896. ΓòÉΓòÉΓòÉ 5.2.6. Improved multiline entry fields ΓòÉΓòÉΓòÉ
  897.  
  898. The multiline entry field (MLE) object has the following new features: 
  899.  
  900. o Ignore tabs 
  901.  
  902.   Setting the new IgnoreTab property to 0 prevents tab characters from being 
  903.   added to the text. Instead, the focus moves to the next object in the tab 
  904.   order. 
  905.  
  906. o Undo 
  907.  
  908.   You can now undo the last change made to a MLE using the Undo method. If you 
  909.   do not want to allow the user to undo changes, set the DisableUndo property 
  910.   to 1. 
  911.  
  912.  
  913. ΓòÉΓòÉΓòÉ 5.2.7. New tab handling in entry fields ΓòÉΓòÉΓòÉ
  914.  
  915. Entry fields have a limit on the number of characters they can hold. If the 
  916. (new) AutoTab property is set to 1, then the focus automatically changes to the 
  917. next object in the tab order when the maximum number of characters have been 
  918. typed in the entry field. 
  919.  
  920.  
  921. ΓòÉΓòÉΓòÉ 5.2.8. Controlling word wrap in descriptive text ΓòÉΓòÉΓòÉ
  922.  
  923. If you set the new WordBreak property of descriptive text objects, the text 
  924. will not wrap automatically. 
  925.  
  926.  
  927. ΓòÉΓòÉΓòÉ 5.3. Other new or improved properties, events, and methods ΓòÉΓòÉΓòÉ
  928.  
  929.  
  930. ΓòÉΓòÉΓòÉ 5.3.1. Drop down combo box ΓòÉΓòÉΓòÉ
  931.  
  932. Typing the first character of an item in the list now selects it. If you type 
  933. the same character, the next item that starts with that character is selected. 
  934.  
  935.  
  936. ΓòÉΓòÉΓòÉ 5.3.2. VRMessageStem function ΓòÉΓòÉΓòÉ
  937.  
  938. The VRMessageStem function has been made faster. 
  939.  
  940.  
  941. ΓòÉΓòÉΓòÉ 6. New features in version 1.01 ΓòÉΓòÉΓòÉ
  942.  
  943. For more information on the following features refer to the online 
  944. documentation. 
  945.  
  946.  
  947. ΓòÉΓòÉΓòÉ 6.1. Improved Development Environment ΓòÉΓòÉΓòÉ
  948.  
  949.  
  950. ΓòÉΓòÉΓòÉ 6.1.1. Drag and drop programming ΓòÉΓòÉΓòÉ
  951.  
  952. VXΓêÖREXX has a new facility to make programming faster and easier. All REXX 
  953. functions, all of VXΓêÖREXX's built in functions, as well as all object methods 
  954. and properties can be used without having to write a single line of code. All 
  955. you have to do to start the process is drag an object onto a section editor 
  956. window. 
  957.  
  958. Suppose you have a window with a list box and a push button. You want to add a 
  959. string to the list every time the push button is clicked. 
  960.  
  961.  1. Open a VXΓêÖREXX section editor for the push button's Click event. 
  962.  
  963.  2. Position the insertion cursor in the section editor window at the point 
  964.     where you want the code to be inserted. 
  965.  
  966.  3. Drag the list box onto the section editor window. 
  967.  
  968.     When the pointer is over an editor window, VXΓêÖREXX draws a line linking the 
  969.     object to the window to indicate that it will generate code, instead of 
  970.     moving the object. When you release the mouse button, VXΓêÖREXX displays a 
  971.     list of actions you can perform on the list box. 
  972.  
  973.  4. Select Add a string from the list 
  974.  
  975.     VXΓêÖREXX will prompt you for the parameters to the AddString method. 
  976.  
  977.  5. Type the text you want to add to the list in the String entry field. 
  978.  
  979.  6. Click OK. 
  980.  
  981. VXΓêÖREXX will add a line at the insertion point similar to the following: 
  982.  
  983. position = VRMethod( "LB_1", "AddString", "Pressed" )
  984.  
  985.  
  986. Inserting code without drag and drop 
  987.  
  988. You can also use this facility directly from the Insert code menu item in the 
  989. section editor's Edit menu.  This allows you to generate code for an object 
  990. without dragging and dropping it, and to generate non-object specific code such 
  991. as calls to standard REXX functions. 
  992.  
  993. To insert code in a section editor: 
  994.  
  995.  1. Open a section editor. 
  996.  
  997.  2. Position the insertion cursor in the section editor window at the point 
  998.     where you want the code to be inserted. 
  999.  
  1000.  3. Select Insert code from either the Edit menu or the (new) pop-up menu 
  1001.     (click on the section editor window with mouse button 2). 
  1002.  
  1003.     VXΓêÖREXX will show a list of objects and tasks for which it can generate 
  1004.     REXX code. 
  1005.  
  1006.  4. Pick an action, then fill in the dialog as described above to generate the 
  1007.     code. 
  1008.  
  1009.  
  1010. Inserting code into external editors 
  1011.  
  1012. Drag and drop code generation does not work for editors other than the VXΓêÖREXX 
  1013. section editor. However you can configure VX-REXX so you can insert code into 
  1014. the OS/2 clipboard from where it can be pasted into any editor. The macros 
  1015. GenCodeO.VRM and GenCodeG.VRM in the Macros folder are used to enable this 
  1016. feature. Their use is explained in the Profile.VRM file, also contained in the 
  1017. Macro folder. 
  1018.  
  1019. It is also possible to directly invoke the insert code dialogs from a 
  1020. PM-hosted, REXX-aware editor. The files in the EPMProto directory in the Macros 
  1021. folder are provided to show how an insert code command can be added to the OS/2 
  1022. Enhanced Editor (EPM). See the file EPMProto.TXT in the EPMProto directory for 
  1023. more information. 
  1024.  
  1025.  
  1026. ΓòÉΓòÉΓòÉ 6.1.2. Macros in the development environment ΓòÉΓòÉΓòÉ
  1027.  
  1028. You can now tailor the VXΓêÖREXX development environment by creating custom 
  1029. commands as VXΓêÖREXX macros. This allows you to add new features to VXΓêÖREXX! 
  1030.  
  1031. You create the macros using VXΓêÖREXX, just as you would for any other PM-hosted, 
  1032. REXX-aware application. You create a project, then choose Make macro from the 
  1033. Project menu. You add the macro to the development environment by adding a line 
  1034. to the Profile.VRM file located in the Macros folder. Macro commands added to 
  1035. VXΓêÖREXX appear as extra menu items in the VXΓêÖREXX pop-up menu -- either on all 
  1036. objects or only on selected objects. 
  1037.  
  1038. The following macros, along with their source projects, are included with 
  1039. VXΓêÖREXX: 
  1040.  
  1041. o Tab editor macro 
  1042.  
  1043.   The tab editor macro provides a fast and easy way to set the tab order for 
  1044.   all of the objects on a window. 
  1045.  
  1046. o Set properties macro 
  1047.  
  1048.   The set properties macro can be used instead of property notebooks to view or 
  1049.   set an object's properties. It makes it easier to edit all of the properties 
  1050.   of a single object, or to set the same property on a number of objects. 
  1051.  
  1052. o Resize macro 
  1053.  
  1054.   The resize macro forces a number of objects to the same size. A typical use 
  1055.   is to force a number of push buttons to the same size. 
  1056.  
  1057. o Object list macro 
  1058.  
  1059.   This macro lists all objects on a window. You can select objects from the 
  1060.   list and open their property notebooks. This makes it possible to find 
  1061.   objects that are behind other objects or beyond the border of the window. 
  1062.  
  1063. Details on how to create and install macros are provided in the Profile.VRM and 
  1064. the Macros.TXT files in the Macros directory. 
  1065.  
  1066.  
  1067. ΓòÉΓòÉΓòÉ 6.1.3. Swipe selection now supported ΓòÉΓòÉΓòÉ
  1068.  
  1069. If you press mouse button 1 while the pointer is not over an object, you get a 
  1070. marquee selection with a bounding rectangle. All selection in version 1.00 was 
  1071. done this way. 
  1072.  
  1073. If you press mouse button 1 while over an object, you start a swipe selection. 
  1074. As long as you hold mouse button 1 down, you will select any object the pointer 
  1075. passes over. 
  1076.  
  1077.  
  1078. ΓòÉΓòÉΓòÉ 6.1.4. New status line ΓòÉΓòÉΓòÉ
  1079.  
  1080. A status bar has been added to VXΓêÖREXX to give the name and class of the object 
  1081. that is currently under the pointer. You can disable the feature by unchecking 
  1082. the Show Hints menu item in the Options menu. 
  1083.  
  1084.  
  1085. ΓòÉΓòÉΓòÉ 6.1.5. Resizable tool palette ΓòÉΓòÉΓòÉ
  1086.  
  1087. You can now resize the tool palette. Its size and position is saved along with 
  1088. the size and position of the other VXΓêÖREXX windows when you save a project. 
  1089.  
  1090.  
  1091. ΓòÉΓòÉΓòÉ 6.1.6. Quicker access to event routines ΓòÉΓòÉΓòÉ
  1092.  
  1093. There is a new item in the VXΓêÖREXX object popup menu which lists all of the 
  1094. events for the object. This is a short cut for opening the object's property 
  1095. notebook, selecting the Events page, and clicking on the event. 
  1096.  
  1097.  
  1098. ΓòÉΓòÉΓòÉ 6.1.7. New popup menu in code section editor ΓòÉΓòÉΓòÉ
  1099.  
  1100. Clicking on a code section editor with mouse button 2 now displays a popup 
  1101. version of the Edit menu. This speeds up access to common commands such as cut, 
  1102. copy, and paste. 
  1103.  
  1104.  
  1105. ΓòÉΓòÉΓòÉ 6.1.8. Set the default editor to an external editor ΓòÉΓòÉΓòÉ
  1106.  
  1107. You can now configure VXΓêÖREXX to use an external editor as the default editor. 
  1108. To do this, set the check box in the external editor configuration dialog. 
  1109.  
  1110.  
  1111. ΓòÉΓòÉΓòÉ 6.2. New run time features ΓòÉΓòÉΓòÉ
  1112.  
  1113.  
  1114. ΓòÉΓòÉΓòÉ 6.2.1. New SpinButton object ΓòÉΓòÉΓòÉ
  1115.  
  1116. An additional object, the spin button, has been added. A spin button allows a 
  1117. user to enter a value or select a value from a list. Only a single value from 
  1118. the list is displayed; the user can change the displayed value by clicking on 
  1119. up and down buttons. 
  1120.  
  1121. You can set the list in a spin button either at design time or run time, and 
  1122. you can specify the list as either an enumerated set of values or as a range of 
  1123. values with a specified increment. 
  1124.  
  1125. See the Using objects in the online Programmer's Guide and SpinButton object in 
  1126. the online Reference for more information. 
  1127.  
  1128.  
  1129. ΓòÉΓòÉΓòÉ 6.2.2. Enhanced keyboard support ΓòÉΓòÉΓòÉ
  1130.  
  1131. o Accelerators 
  1132.  
  1133.   VXΓêÖREXX menus can now have accelerator or short-cut keys. Accelerator keys 
  1134.   allow your users to execute menu commands without opening a menu. See the 
  1135.   online Reference under the Accelerator property or InstallAccelerator method 
  1136.   for a full description. 
  1137.  
  1138. o Mnemonics 
  1139.  
  1140.   Mnemonics are now supported for all options with captions. Mnemonics allow 
  1141.   your users to activate objects without using a mouse. See the Caption 
  1142.   property in the online Reference for more information. 
  1143.  
  1144. o Keystroke trapping 
  1145.  
  1146.   Programs can now trap and modify keystrokes. This allows you to change the 
  1147.   behavior of objects, for example convert text in an entry field to uppercase 
  1148.   as it is entered. See the KeyPress event or KeyString property in the online 
  1149.   Reference documentation  for a full description of this new feature. 
  1150.  
  1151.  
  1152. ΓòÉΓòÉΓòÉ 6.2.3. Manipulate windows belonging to other applications ΓòÉΓòÉΓòÉ
  1153.  
  1154. Using the new ListWindows method you can list all of the top level windows in 
  1155. the system. Then you can use the VRGet, VRSet, and VRMethod functions to 
  1156. interact with these windows. The windows appear to the program as VX-REXX 
  1157. objects which support a limited number of properties and methods. 
  1158.  
  1159. You can also post or send keystrokes to PM windows using the new PostKeyString 
  1160. and SendKeyString methods. 
  1161.  
  1162. See the ListWindows method, HWnd property, PostKeyString method, and 
  1163. SendKeyString method in the online Reference for complete information. 
  1164.  
  1165.  
  1166. ΓòÉΓòÉΓòÉ 6.2.4. Clipboard support ΓòÉΓòÉΓòÉ
  1167.  
  1168. You can use two new methods on the Application object to read and write text 
  1169. from/to the OS/2 clipboard. See the PutClipboard and GetClipboard methods in 
  1170. the online documentation for more information. 
  1171.  
  1172.  
  1173. ΓòÉΓòÉΓòÉ 6.2.5. Improved control over STDIO redirection ΓòÉΓòÉΓòÉ
  1174.  
  1175. The VRRedirectSTDIO function now lets you enable and disable standard I/O 
  1176. redirection and logging under program control. 
  1177.  
  1178.  
  1179. ΓòÉΓòÉΓòÉ 6.2.6. Source code encoding in EXE files ΓòÉΓòÉΓòÉ
  1180.  
  1181. VXΓêÖREXX now encodes your REXX source code when it makes EXE files. This means 
  1182. that you can distribute your programs and keep your source secure. 
  1183.  
  1184.  
  1185. ΓòÉΓòÉΓòÉ 6.2.7. Improved error handling in VXΓêÖREXX generated macros ΓòÉΓòÉΓòÉ
  1186.  
  1187. When you make macros, VXΓêÖREXX now automatically generates code to trap syntax 
  1188. errors. The code displays an error message, then exits the macro. If you have 
  1189. your own syntax error handler, it will override the automatically generated 
  1190. one. 
  1191.  
  1192.  
  1193. ΓòÉΓòÉΓòÉ 6.2.8. File menu removed from the debugger ΓòÉΓòÉΓòÉ
  1194.  
  1195. The debugger section list window no longer contains a File menu with a single 
  1196. Quit item. It was removed to improve the conformance of VX-REXX to the CUA '91 
  1197. object model. Now just close the section list window to quit the debugger and 
  1198. return to the design environment. 
  1199.  
  1200.  
  1201. ΓòÉΓòÉΓòÉ 6.2.9. Support for Personal REXX version 3.0a ΓòÉΓòÉΓòÉ
  1202.  
  1203. VXΓêÖREXX now works with Quercus System's Personal REXX version 3.0a. 
  1204.  
  1205.  
  1206. ΓòÉΓòÉΓòÉ 6.3. Other new or improved properties, events, and methods ΓòÉΓòÉΓòÉ
  1207.  
  1208. Refer to the online Reference for complete information on the following. 
  1209.  
  1210.  
  1211. ΓòÉΓòÉΓòÉ 6.3.1. AddStringList method ΓòÉΓòÉΓòÉ
  1212.  
  1213. This method now disables list box repainting while adding strings to the list, 
  1214. speeding up the operation. 
  1215.  
  1216.  
  1217. ΓòÉΓòÉΓòÉ 6.3.2. AdjustHeight property ΓòÉΓòÉΓòÉ
  1218.  
  1219. This ListBox property forces the list box to adjust its height to an integral 
  1220. number of lines. 
  1221.  
  1222.  
  1223. ΓòÉΓòÉΓòÉ 6.3.3. Change event ΓòÉΓòÉΓòÉ
  1224.  
  1225. Objects containing an entry field now support a Change event which is triggered 
  1226. whenever the contents of the field have changed. 
  1227.  
  1228.  
  1229. ΓòÉΓòÉΓòÉ 6.3.4. ExtendedSelect property ΓòÉΓòÉΓòÉ
  1230.  
  1231. List boxes now support two styles of multiple selection, extended (items are 
  1232. selected in ranges) and non-extended (items are selected one at a time). 
  1233.  
  1234.  
  1235. ΓòÉΓòÉΓòÉ 6.3.5. HWnd property ΓòÉΓòÉΓòÉ
  1236.  
  1237. All visible objects now have an HWnd property which gives the value of the PM 
  1238. handle to the outer window of the object. 
  1239.  
  1240.  
  1241. ΓòÉΓòÉΓòÉ 6.3.6. Justification property ΓòÉΓòÉΓòÉ
  1242.  
  1243. DescriptiveText and EntryField objects have a new Justification property, which 
  1244. can be Left, Right, or Center. 
  1245.  
  1246.  
  1247. ΓòÉΓòÉΓòÉ 6.3.7. LayoutStyle property ΓòÉΓòÉΓòÉ
  1248.  
  1249. The layout style controls how a window arranges the objects it contains. You 
  1250. can use this property to make windows that automatically resize their children. 
  1251.  
  1252.  
  1253. ΓòÉΓòÉΓòÉ 6.3.8. ListChildren method ΓòÉΓòÉΓòÉ
  1254.  
  1255. This method lists the children of a given object. 
  1256.  
  1257.  
  1258. ΓòÉΓòÉΓòÉ 6.3.9. ListClasses method ΓòÉΓòÉΓòÉ
  1259.  
  1260. Use this method to list the classes of objects in a DLL or in the current 
  1261. program. 
  1262.  
  1263.  
  1264. ΓòÉΓòÉΓòÉ 6.3.10. Maximize method ΓòÉΓòÉΓòÉ
  1265.  
  1266. This new window method causes a window to be maximized. 
  1267.  
  1268.  
  1269. ΓòÉΓòÉΓòÉ 6.3.11. Minimize method ΓòÉΓòÉΓòÉ
  1270.  
  1271. This new window method minimizes a window. 
  1272.  
  1273.  
  1274. ΓòÉΓòÉΓòÉ 6.3.12. MultiLineEntryField object ΓòÉΓòÉΓòÉ
  1275.  
  1276. Multiline entry fields now support the DoubleClick event. 
  1277.  
  1278.  
  1279. ΓòÉΓòÉΓòÉ 6.3.13. Painting property ΓòÉΓòÉΓòÉ
  1280.  
  1281. This new property has been added to all visible objects and can be used to 
  1282. suppress painting of an object or group of objects during an update. 
  1283.  
  1284.  
  1285. ΓòÉΓòÉΓòÉ 6.3.14. Pointer property ΓòÉΓòÉΓòÉ
  1286.  
  1287. Use this property to set the pointer to an hourglass or other shape during long 
  1288. calculations. 
  1289.  
  1290.  
  1291. ΓòÉΓòÉΓòÉ 6.3.15. PostQueue method ΓòÉΓòÉΓòÉ
  1292.  
  1293. This method is the same as the Post method except that it allows you to specify 
  1294. which window queue (i.e. which primary window) should receive the posted event. 
  1295. This ensures that the event is not simply delivered to the currently active 
  1296. window. 
  1297.  
  1298.  
  1299. ΓòÉΓòÉΓòÉ 6.3.16. Restore method ΓòÉΓòÉΓòÉ
  1300.  
  1301. This window method restores a minimized or maximized window to its previous 
  1302. size and position. 
  1303.  
  1304.  
  1305. ΓòÉΓòÉΓòÉ 6.3.17. StatusArea ΓòÉΓòÉΓòÉ
  1306.  
  1307. The status area on windows now has a sporty 3D look. 
  1308.  
  1309.  
  1310. ΓòÉΓòÉΓòÉ 6.3.18. SupportsMethod method ΓòÉΓòÉΓòÉ
  1311.  
  1312. This method determines if a given method is available for a specified object or 
  1313. type of object. 
  1314.  
  1315.  
  1316. ΓòÉΓòÉΓòÉ 6.3.19. SupportsProperty methods ΓòÉΓòÉΓòÉ
  1317.  
  1318. This method determines if a given property is available for a specified object 
  1319. or type of object. 
  1320.  
  1321.  
  1322. ΓòÉΓòÉΓòÉ 6.3.20. TabGroup property ΓòÉΓòÉΓòÉ
  1323.  
  1324. This property has been added to all objects with the TabStop property. This 
  1325. property is used to group objects into tab groups without using group boxes. 
  1326. The user can move from object to object within a tab group by using either the 
  1327. tab or cursor keys, but can only switch between tab groups by using the tab 
  1328. key. 
  1329.  
  1330.  
  1331. ΓòÉΓòÉΓòÉ 6.3.21. VertJustification property ΓòÉΓòÉΓòÉ
  1332.  
  1333. DescriptiveText objects have a new VertJustification property, which can be 
  1334. Top, Bottom, or Center. You must set this property at design time; it is read 
  1335. only at run time. For a full description, see the online documentation. 
  1336.  
  1337.  
  1338. ΓòÉΓòÉΓòÉ 7. Tips ΓòÉΓòÉΓòÉ
  1339.  
  1340.  
  1341. ΓòÉΓòÉΓòÉ 7.1. Using VXΓêÖREXX ΓòÉΓòÉΓòÉ
  1342.  
  1343.  
  1344. ΓòÉΓòÉΓòÉ 7.1.1. Running VXΓêÖREXX ΓòÉΓòÉΓòÉ
  1345.  
  1346. o VXΓêÖREXX can be started from an OS/2 command prompt. The command line syntax 
  1347.   is: 
  1348.  
  1349.       vrxedit [project] 
  1350.  
  1351.   where project is the name of a project (VRP) file. 
  1352.  
  1353. o Before executing a pull instruction, be sure to execute a say instruction in 
  1354.   order to open the standard I/O console. If you execute pull when the console 
  1355.   is not visible your program may appear frozen. Your program has not crashed; 
  1356.   it is just waiting for input. 
  1357.  
  1358.   You can force the console to become visible by selecting Show for the VXΓêÖREXX 
  1359.   console in the OS/2 window list. Alternatively, you can exit your program by 
  1360.   selecting Close from the program's pop-up menu in the OS/2 window list. 
  1361.  
  1362.  
  1363. ΓòÉΓòÉΓòÉ 7.1.2. Using the debugger ΓòÉΓòÉΓòÉ
  1364.  
  1365. o To stop the debugging session at any time simply close the debugger section 
  1366.   list window. 
  1367.  
  1368. o You can enter REXX statements for immediate execution in the Results window. 
  1369.   For example you can enter say statements to see the value of variables and 
  1370.   simple expressions. 
  1371.  
  1372.  
  1373. ΓòÉΓòÉΓòÉ 7.1.3. Interrupting a VXΓêÖREXX program ΓòÉΓòÉΓòÉ
  1374.  
  1375. You can use the Close command from the OS/2 Window List Window (Ctrl+Esc) to 
  1376. interrupt a VXΓêÖREXX program. 
  1377.  
  1378.  
  1379. ΓòÉΓòÉΓòÉ 7.2. Using VXΓêÖREXX objects ΓòÉΓòÉΓòÉ
  1380.  
  1381.  
  1382. ΓòÉΓòÉΓòÉ 7.2.1. Using property notebooks ΓòÉΓòÉΓòÉ
  1383.  
  1384. The property notebook for a Window has more page tabs than are displayed at the 
  1385. default size. To see additional page tabs, make the notebook larger or use the 
  1386. double up and down arrows above and below the page tabs. 
  1387.  
  1388.  
  1389. ΓòÉΓòÉΓòÉ 7.2.2. Window files versus multiple windows ΓòÉΓòÉΓòÉ
  1390.  
  1391. We strongly recommend that you place modal windows in separate window files. 
  1392. Window files are created and managed using the File list in VXΓêÖREXX. You should 
  1393. use secondary windows, and the VXΓêÖREXX Window list only for modeless windows. 
  1394. See the MMW sample program for an example of modal versus modeless windows. 
  1395.  
  1396.  
  1397. ΓòÉΓòÉΓòÉ 7.2.3. Using DropDownComboBoxes ΓòÉΓòÉΓòÉ
  1398.  
  1399. The height set for drop-down combo boxes in the design environment is the 
  1400. dropped-down height (the height of the entry field is fixed and depends only on 
  1401. the font). If you set the size too small the drop-down list will not drop down 
  1402. at run time. 
  1403.  
  1404.  
  1405. ΓòÉΓòÉΓòÉ 7.2.4. Using GroupBoxes ΓòÉΓòÉΓòÉ
  1406.  
  1407. GroupBoxes must contain objects within their borders; you cannot simply place a 
  1408. GroupBox on top of existing objects. Objects are contained in a GroupBox if 
  1409. they are created in the GroupBox or if they are pasted into the group box. Use 
  1410. Cut and Paste to move existing objects into a GroupBox. 
  1411.  
  1412.  
  1413. ΓòÉΓòÉΓòÉ 7.2.5. Changing tab behavior with multiline entry fields ΓòÉΓòÉΓòÉ
  1414.  
  1415. By default, pressing Tab in a multiline entry field (MLE) inserts a tab 
  1416. character into the MLE, rather than moving the focus to the next object in the 
  1417. tab order. While the user can always press Ctrl+Tab to move to the next object, 
  1418. you can use the KeyPress event to do this automatically when the user presses 
  1419. Tab. 
  1420.  
  1421. Add a KeyPress event for the MLE as follows: 
  1422.  
  1423. MLE_1_KeyPress:
  1424.     keystring = VRGet( "MLE_1", "KeyString" )
  1425.     if keystring = "{Tab}" then do
  1426.         ok = VRSet( "MLE_1", "KeyString", "{Ctrl}{Tab}" )
  1427.     end
  1428. return
  1429.  
  1430. For more information about the KeyPress event or the KeyString property, see 
  1431. the online reference. 
  1432.  
  1433.  
  1434. ΓòÉΓòÉΓòÉ 7.2.6. Generating timer events ΓòÉΓòÉΓòÉ
  1435.  
  1436. You can generate timer events by using the multithreading capability of 
  1437. VXΓêÖREXX: 
  1438.  
  1439.  1. Create a separate code-only file with the following code: 
  1440.  
  1441.         Main:
  1442.             call RXFuncAdd "SysLoadFuncs", "REXXUTIL", "SysLoadFuncs"
  1443.             call SysLoadFuncs
  1444.  
  1445.             do forever
  1446.                 call SysSleep 1    /* wait 1 second */
  1447.                 call VRMethod "Application",,
  1448.                               "PostQueue", 0, 1, "call TimerEvent"
  1449.             end
  1450.         return
  1451.  
  1452.  2. In the Init section of the main window file, start the timer thread using 
  1453.     the StartThread method: 
  1454.  
  1455.         call VRMethod "Application", "StartThread", "File1"
  1456.  
  1457.     You should replace File1 with the actual name of the code-only file you 
  1458.     created in step 1. 
  1459.  
  1460.  3. From the section list, add a new section called "TimerEvent" to the main 
  1461.     window file. 
  1462.  
  1463. When you run your program, the TimerEvent routine will be called every second. 
  1464.  
  1465. For longer timeouts add a second loop in the timer thread code to count seconds 
  1466. rather than increase the time spent in the SysSleep function. This will ensure 
  1467. that your application can be shutdown, as it will not be blocked in SysSleep 
  1468. for long periods of time. 
  1469.  
  1470. You can also pass and use internal object names between threads. For example 
  1471. you could pass the internal name of a descriptive text field to a timer thread 
  1472. which could then use VRSet to modify the text directly -- without posting an 
  1473. event. This would ensure that the text was updated even when the window it was 
  1474. on was not responding to events. 
  1475.  
  1476.  
  1477. ΓòÉΓòÉΓòÉ 7.3. Launching programs from REXX ΓòÉΓòÉΓòÉ
  1478.  
  1479.  
  1480. ΓòÉΓòÉΓòÉ 7.3.1. Running commands that require OS/2 session "VIO" support ΓòÉΓòÉΓòÉ
  1481.  
  1482. Since VXΓêÖREXX projects are Presentation Manager programs, you cannot directly 
  1483. execute OS/2 commands which require "VIO" support. The OS/2 PSTAT command uses 
  1484. VIO support. If you try to run it from REXX, you will get a "SYS0436: An 
  1485. invalid VIO handle was found" error. 
  1486.  
  1487. Use the OS/2 start command to run this program. The following instructions will 
  1488. run PSTAT in its own OS/2 window. 
  1489.  
  1490. address cmd "start /win pstat <con >con"
  1491.  
  1492. To get help for the OS/2 start command, type help start from an OS/2 command 
  1493. window. The use of the redirection symbols < and > is explained below. 
  1494.  
  1495.  
  1496. ΓòÉΓòÉΓòÉ 7.3.2. Redirecting standard input, output and error ΓòÉΓòÉΓòÉ
  1497.  
  1498. By default, VXΓêÖREXX redirects the standard input, output, and error streams to 
  1499. its console window. If you launch a program or execute an OS/2 command, the 
  1500. output is sent to the console and input is taken from the console. 
  1501.  
  1502. For example, the following instruction sends a directory listing to the 
  1503. console: 
  1504.  
  1505. address cmd "dir"
  1506.  
  1507. When you run non-PM programs, the output is sent to the console unless you 
  1508. explicitly redirect it. The following instruction will run PSTAT in its own 
  1509. window, and the results will be displayed in the window. 
  1510.  
  1511. address cmd "start /win pstat <con >con"
  1512.  
  1513. If the program you are running writes to standard error, you should add 2>con 
  1514. to redirect standard error, as follows: 
  1515.  
  1516. address cmd "start /win pstat <con >con 2>con"
  1517.  
  1518.  
  1519. ΓòÉΓòÉΓòÉ 7.4. Writing REXX programs ΓòÉΓòÉΓòÉ
  1520.  
  1521.  
  1522. ΓòÉΓòÉΓòÉ 7.4.1. Returning multiple values ΓòÉΓòÉΓòÉ
  1523.  
  1524. Multiple values can be returned from a function by concatenating them into a 
  1525. single string, returning the string, then using parse to break the return 
  1526. string into separate values. 
  1527.  
  1528.  
  1529. ΓòÉΓòÉΓòÉ 7.4.2. Using Files ΓòÉΓòÉΓòÉ
  1530.  
  1531. Explicit open and close commands are not required to read and write files using 
  1532. REXX, but you must be aware that once you access a file it is left open unless 
  1533. you explicitly close it. You cannot delete files that are open and you may be 
  1534. unable to open new files if all available file handles have been used. 
  1535.  
  1536. To avoid such problems, be sure your REXX program closes any files it opens as 
  1537. soon as it is done with them. For example, the following code opens a file 
  1538. called baker, writes to it, and closes it: 
  1539.  
  1540. call stream "baker", "c", "open write"
  1541. call lineout "baker", "Skip to the loo"
  1542. call stream "baker", "c", "close"
  1543.  
  1544. For more information about the stream instruction, see the online REXX 
  1545. Information. 
  1546.  
  1547.  
  1548. ΓòÉΓòÉΓòÉ 7.4.3. Common REXX coding errors ΓòÉΓòÉΓòÉ
  1549.  
  1550. Blank space where it does not belong 
  1551.  
  1552. In REXX expressions, blank space is interpreted as an implicit concatenation 
  1553. operator (the terms are concatenated with a blank in between). As a result, 
  1554. REXX will interpret many mistyped statements as an expression involving the 
  1555. blank concatenation operator. 
  1556.  
  1557. For example, inserting a blank after a function name in a function call changes 
  1558. the meaning of the expression: 
  1559.  
  1560. textUpper = translate ( text )
  1561.  
  1562. to: 
  1563.  
  1564. textUpper = "TRANSLATE" || " " || text
  1565.  
  1566. Blank space also plays a special role in the parse instruction. Compare the 
  1567. following: 
  1568.  
  1569. parse arg a b c
  1570. parse arg a, b, c
  1571.  
  1572. The first line parses the first argument passed to the routine into three 
  1573. parts, the second line sets the three variables to the value of the first three 
  1574. arguments passed to the routine. 
  1575.  
  1576. Function calls versus the CALL statement 
  1577.  
  1578. When you call a routine that returns a result, you must enclose the parameters 
  1579. in parentheses: 
  1580.  
  1581. text = VRGet( "EF_1", "Value" )
  1582.  
  1583. If you are calling a routine that does not return a value, you should use the 
  1584. call instruction: 
  1585.  
  1586. call VRSet "EF_1", "BackColor", "Blue"
  1587.  
  1588. Note that there is no comma between the name of the routine and the first 
  1589. parameter. 
  1590.  
  1591. Ignoring return values of functions 
  1592.  
  1593. When using a function as a procedure, you must not ignore the return value. If 
  1594. the return value is not handled it will be passed to the default host 
  1595. environment as a command. This will normally result in a failure trace message. 
  1596. Either assign the returned value to a variable or use the call instruction to 
  1597. call the function as a procedure. 
  1598.  
  1599. Line continuation 
  1600.  
  1601. In REXX, the comma is the line continuation character. It is required when 
  1602. extending one clause over several lines. For example, 
  1603.  
  1604. call foo a, b, c
  1605.  
  1606. can also be written as 
  1607.  
  1608. call foo a, ,
  1609.          b, ,
  1610.          c
  1611.  
  1612. It is easy to forget the second comma if you are breaking a line in the middle 
  1613. of a parameter list. 
  1614.  
  1615. Omitted arguments 
  1616.  
  1617. REXX allows arguments to be omitted. Be careful not to omit arguments by 
  1618. accident. 
  1619.  
  1620. The following calls foo with four arguments (the first one is omitted). 
  1621.  
  1622. call foo, a, b, c
  1623.  
  1624. Undefined variables 
  1625.  
  1626. It is not a syntax error to use undefined variables in REXX. Undefined 
  1627. variables are defined to have their own name translated to uppercase as their 
  1628. value. As a result it is often difficult to find programming errors that are a 
  1629. result of using undefined variables. 
  1630.  
  1631.    o Add a "SIGNAL ON NOVALUE" statement to the main section of your programs. 
  1632.      This will cause the system to issue a syntax error if you use an undefined 
  1633.      variable. 
  1634.  
  1635.    o Be careful to include the period when referring to stems. The variables A 
  1636.      and A. are unrelated. 
  1637.  
  1638.    o Misspelled commands will often be interpreted as undefined variables. The 
  1639.      line 
  1640.  
  1641.           sy 'hello'
  1642.  
  1643.      (which should be "say 'hello'") will be interpreted as 
  1644.  
  1645.           "SY" || " " || 'hello'
  1646.  
  1647.      Thus the string "SY hello" will be sent to OS/2 for execution, resulting 
  1648.      in a command failure error. 
  1649.  
  1650. Using expressions in the tail of a compound symbol 
  1651.  
  1652. The tail of a compound symbol can only be a simple variable, as in: 
  1653.  
  1654. ok = A.I
  1655.  
  1656. Literals are not allowed. The following is interpreted as a concatenation 
  1657. between A. and "name" 
  1658.  
  1659. bad = A."name"
  1660.  
  1661. Expressions are not allowed. The following is interpreted as "bad = (A.I) - 1". 
  1662.  
  1663. bad = A.I-1
  1664.  
  1665. Assign the literal or expression to a simple variable and use that to form the 
  1666. compound variable: 
  1667.  
  1668. J = I - 1
  1669. ok = A.J
  1670.  
  1671.  
  1672. ΓòÉΓòÉΓòÉ 8. Restrictions ΓòÉΓòÉΓòÉ
  1673.  
  1674.  
  1675. ΓòÉΓòÉΓòÉ 8.1. Installation ΓòÉΓòÉΓòÉ
  1676.  
  1677. The installation program requires a minimum of 1M free space on the OS/2 boot 
  1678. drive to start the install. 
  1679.  
  1680.  
  1681. ΓòÉΓòÉΓòÉ 8.2. Development environment ΓòÉΓòÉΓòÉ
  1682.  
  1683.  
  1684. ΓòÉΓòÉΓòÉ 8.2.1. Missing windows ΓòÉΓòÉΓòÉ
  1685.  
  1686. On some occasions a project's window positions may not be saved correctly. It 
  1687. may appear that one or more of the windows in your project has disappeared, but 
  1688. they are actually just off the screen. Move the VXΓêÖREXX window around your 
  1689. screen, as this may cause the windows to reappear. Once you can see any part of 
  1690. the window click on it and press Atl+F7 to move it, or double click on it and 
  1691. set the Top and Left properties to 0. 
  1692.  
  1693. If the windows do not reappear, save the file as text, and manually change the 
  1694. Top and Left properties of the hidden windows to 0, which will be certain to be 
  1695. on the screen when you reload the file. 
  1696.  
  1697.  
  1698. ΓòÉΓòÉΓòÉ 8.2.2. Tab order ΓòÉΓòÉΓòÉ
  1699.  
  1700. Objects pasted into a window are not placed at the end of the tab order. They 
  1701. keep their current tab index; the tab indices of other objects on the window 
  1702. are adjusted accordingly. You should create and edit your windows without 
  1703. regard to the tab order, then set the tab order in the final version. 
  1704.  
  1705.  
  1706. ΓòÉΓòÉΓòÉ 8.2.3. Updating property notebooks ΓòÉΓòÉΓòÉ
  1707.  
  1708. Open property notebooks are not updated while open to show the results of drag 
  1709. and drop fonts and colors. To refresh the values on a page, turn to another 
  1710. page, then turn back to the first page. Closing and reopening a notebook also 
  1711. refreshes the values. 
  1712.  
  1713.  
  1714. ΓòÉΓòÉΓòÉ 8.2.4. Loading files saved as text ΓòÉΓòÉΓòÉ
  1715.  
  1716. Not all syntax errors in text-format (VRT) window files are reported. In these 
  1717. cases the file will load successfully, but the window will not appear. If this 
  1718. happens, fix the syntax errors in the text file and reload it. 
  1719.  
  1720.  
  1721. ΓòÉΓòÉΓòÉ 8.2.5. HPFS file names ΓòÉΓòÉΓòÉ
  1722.  
  1723. File names containing multiple periods (e.g. a.b.c) are not accepted by 
  1724. VXΓêÖREXX. Avoid these names when saving project and source files. 
  1725.  
  1726.  
  1727. ΓòÉΓòÉΓòÉ 8.2.6. Debugger ΓòÉΓòÉΓòÉ
  1728.  
  1729. o Because of the way the debugger handles breakpoints, it is impossible to 
  1730.   break a program on the first instruction in a file. 
  1731.  
  1732. o The current version of the interactive debugger supports only the main thread 
  1733.   of a program. Use the standard REXX trace instruction with the VXΓêÖREXX 
  1734.   console to debug multithreaded projects. 
  1735.  
  1736.  
  1737. ΓòÉΓòÉΓòÉ 8.3. Using VXΓêÖREXX objects ΓòÉΓòÉΓòÉ
  1738.  
  1739.  
  1740. ΓòÉΓòÉΓòÉ 8.3.1. Overlapping objects ΓòÉΓòÉΓòÉ
  1741.  
  1742. VXΓêÖREXX does not support overlapping objects (nor in general does OS/2). 
  1743. Overlapping objects will not paint correctly. 
  1744.  
  1745.  
  1746. ΓòÉΓòÉΓòÉ 8.3.2. Sending key strings to OS/2 and DOS sessions ΓòÉΓòÉΓòÉ
  1747.  
  1748. You cannot use PostKeyString or SendKeyString to send key strings to OS/2 and 
  1749. DOS sessions (windowed or full screen). 
  1750.  
  1751.  
  1752. ΓòÉΓòÉΓòÉ 8.4. Running VXΓêÖREXX programs ΓòÉΓòÉΓòÉ
  1753.  
  1754.  
  1755. ΓòÉΓòÉΓòÉ 8.4.1. Running VXΓêÖREXX macros from an OS/2 window ΓòÉΓòÉΓòÉ
  1756.  
  1757. VXΓêÖREXX macros created with the Make macro command cannot be run from an OS/2 
  1758. command prompt. They must be run from within a Presentation Manager session. 
  1759. The VRX command can be used to run VXΓêÖREXX macros: 
  1760.  
  1761.     vrx macro-name 
  1762.  
  1763. You should use the Make EXE file command in the Project menu to make standalone 
  1764. programs. Use the Make macro command to make macros to use with other PM 
  1765. applications such as the Enhanced Editor. 
  1766.  
  1767.  
  1768. ΓòÉΓòÉΓòÉ 8.4.2. Starting OS/2 commands from multiple threads ΓòÉΓòÉΓòÉ
  1769.  
  1770. The OS/2 command host will only run one program at a time. I.e. if you start a 
  1771. program on one thread, you will be unable to start a program on any other 
  1772. thread until the first program returns. To run multiple programs at the same 
  1773. time use the OS/2 start command. Enter help start at an OS/2 command prompt for 
  1774. more information. 
  1775.  
  1776.  
  1777. ΓòÉΓòÉΓòÉ 8.4.3. Syntax errors with Quercus System's Personal REXX ΓòÉΓòÉΓòÉ
  1778.  
  1779. When running under Personal REXX version 3.0a syntax errors are either reported 
  1780. only within the VXΓêÖREXX console or both within the VXΓêÖREXX console and the 
  1781. standard VXΓêÖREXX error dialog. 
  1782.  
  1783.  
  1784. ΓòÉΓòÉΓòÉ 9. Fixes in version 1.01B ΓòÉΓòÉΓòÉ
  1785.  
  1786.  
  1787. ΓòÉΓòÉΓòÉ 9.1. Objects, properties, events, and methods ΓòÉΓòÉΓòÉ
  1788.  
  1789. AddStringList method 
  1790.  
  1791. The AddStringList method now works properly when invoked from different 
  1792. threads. 
  1793.  
  1794. ListProperties method 
  1795.  
  1796. The ListProperties method now works correctly with the Application and Screen 
  1797. objects. 
  1798.  
  1799. ListWindows method 
  1800.  
  1801. Previously, some PM window handles would not be returned consistently. As a 
  1802. result, the WINCTRL sample program could not always list all frame windows. 
  1803.  
  1804. Multiline entry field object 
  1805.  
  1806. The MLE now returns correct values for the SelectedStart and SelectedEnd 
  1807. properties. Previously, it was not counting carriage return and line feed 
  1808. characters correctly. 
  1809.  
  1810. PutVar method 
  1811.  
  1812. Previously, using PutVar to store undefined REXX variables caused unpredictable 
  1813. results. This problem has been fixed. 
  1814.  
  1815. StartThread method 
  1816.  
  1817. This method now consistently frees the memory that it allocates. 
  1818.  
  1819.  
  1820. ΓòÉΓòÉΓòÉ 10. Fixes in version 1.01A ΓòÉΓòÉΓòÉ
  1821.  
  1822. Results of the REXX say and trace instructions are now displayed correctly in 
  1823. the console window. In version 1.01, executing these instructions would produce 
  1824. unpredictable results under some circumstances. 
  1825.  
  1826.  
  1827. ΓòÉΓòÉΓòÉ 11. Fixes in version 1.01 ΓòÉΓòÉΓòÉ
  1828.  
  1829.  
  1830. ΓòÉΓòÉΓòÉ 11.1. Installation ΓòÉΓòÉΓòÉ
  1831.  
  1832. o Improved installation check for free disk space. 
  1833.  
  1834. o CONVERT.EXE has been removed from the VXΓêÖREXX directory. 
  1835.  
  1836. o The install setup program is deleted from the root of the OS/2 boot drive. 
  1837.  
  1838.  
  1839. ΓòÉΓòÉΓòÉ 11.2. Design environment ΓòÉΓòÉΓòÉ
  1840.  
  1841.  
  1842. ΓòÉΓòÉΓòÉ 11.2.1. General ΓòÉΓòÉΓòÉ
  1843.  
  1844. o Improved error handling if VXΓêÖREXX is unable to load a window. 
  1845.  
  1846. o VXΓêÖREXX now correctly handles filenames which contain blanks or apostrophes. 
  1847.  
  1848. o Save as text now works correctly for code only files. 
  1849.  
  1850. o You can no longer drag objects off of a window or group box at design time. 
  1851.  
  1852. o REXX syntax errors are now handled more gracefully when running and debugging 
  1853.   a project. 
  1854.  
  1855. o Fixed occasional problems in updating the file and window lists. 
  1856.  
  1857. o Pressing F1 now opens the general help for VXΓêÖREXX when an edit window is 
  1858.   active. 
  1859.  
  1860. o Fixed problem in VXΓêÖREXX that generated a REXX error if OS/2 was shutdown or 
  1861.   a work area was closed while VXΓêÖREXX was running. 
  1862.  
  1863. o VXΓêÖREXX now confirms the creation of an EXE or macro. 
  1864.  
  1865. o VXΓêÖREXX now shows the full path of a file in the dialog that warns you about 
  1866.   overwriting existing files. 
  1867.  
  1868. o Disabled items have been removed from popup menus. 
  1869.  
  1870. o Fixed a problem with "ghost menus" appearing on some OS/2 2.1 systems when 
  1871.   mouse button 2 was pressed. 
  1872.  
  1873. o Fixed painting of edit handles on multiwindow objects. 
  1874.  
  1875. o Z-order of windows is now preserved when changing property values. 
  1876.  
  1877. o Better handling of long tokens in REXX programs. 
  1878.  
  1879.  
  1880. ΓòÉΓòÉΓòÉ 11.2.2. Property notebooks ΓòÉΓòÉΓòÉ
  1881.  
  1882. o Notebooks are now updated automatically while they are open if the object's 
  1883.   size, position, or tab order is changed. You can also refresh the values on a 
  1884.   page by flipping to another page, then flipping back. 
  1885.  
  1886. o Notebook pages no longer flash when they are selected for the first time. 
  1887.  
  1888. o The act of opening a section editor by selecting an event no longer marks the 
  1889.   object as being changed. 
  1890.  
  1891. o Deleted events are no longer shown in bold on the events page. 
  1892.  
  1893. o The font selection dialog now recognizes italics and bold attributes. 
  1894.   Previously, they were ignored. 
  1895.  
  1896. o The font and file dialogs are now centered over the notebook, rather than 
  1897.   being centered on the screen. 
  1898.  
  1899. o Pressing F1 when a notebook is active now opens the general help for VXΓêÖREXX. 
  1900.  
  1901. o The value of the InitialList property can now be deleted without freezing the 
  1902.   notebook window. 
  1903.  
  1904. o Changing a property on the "Style" page for a secondary window now marks the 
  1905.   project as changed. Previously it did not. 
  1906.  
  1907. o Previously, if more than one property notebook was open, changing the Name 
  1908.   property in one notebook incorrectly changed the title of the other notebook. 
  1909.  
  1910. o Notebooks are now displayed as an icon when minimized. Previously, they were 
  1911.   shown as the lower left corner of the full sized window. 
  1912.  
  1913. o Previously the tab order could have been changed when setting certain 
  1914.   properties. This problem has been fixed. 
  1915.  
  1916. o In version 1.0, if you restored a minimized property notebook by double 
  1917.   clicking on its icon in the Minimized Window Viewer, OS/2 would crash. This 
  1918.   problem is fixed. 
  1919.  
  1920. o Previously, opening more than one property notebook at a time would cause the 
  1921.   notebooks to flash when they opened. This has been fixed. 
  1922.  
  1923. o Property notebooks now show the object type in the title bar. 
  1924.  
  1925. o Property notebooks now appear in the OS/2 window list. 
  1926.  
  1927. o Deleting a section with a name of the same form as an event section no longer 
  1928.   causes an error. 
  1929.  
  1930. o Fixed a problem that left a secondary window disabled when a system menu was 
  1931.   added or removed from it. 
  1932.  
  1933.  
  1934. ΓòÉΓòÉΓòÉ 11.2.3. Code section editor ΓòÉΓòÉΓòÉ
  1935.  
  1936. o When you open a section, you are placed automatically in insert mode. 
  1937.  
  1938. o Fixed problem with spurious characters appended to imported text data in the 
  1939.   section editor. 
  1940.  
  1941. o Deleting a section now closes the editor window for that section. 
  1942.  
  1943. o In some rare instances, activating a section editor window could cause the 
  1944.   project windows to change their Z-order. This has been fixed. 
  1945.  
  1946.  
  1947. ΓòÉΓòÉΓòÉ 11.2.4. Debugger ΓòÉΓòÉΓòÉ
  1948.  
  1949. o The debugger now gracefully terminates if the REXX program contains a syntax 
  1950.   error. 
  1951.  
  1952. o The REXX RESULT variable is no longer reset by the debugger. 
  1953.  
  1954. o Previously, the first character of some lines in the results window was 
  1955.   inadvertently converted to a blank. This problem has been fixed. 
  1956.  
  1957. o The "Clear" item in the "Breakpoints" menu is now disabled if no breakpoints 
  1958.   are set. 
  1959.  
  1960. o The "Set" item in the "Breakpoints" menu is now enabled all the time. 
  1961.  
  1962. o REXX errors resulting from statements typed in the Results window are now 
  1963.   printed in the Results window. Previously, they were displayed in the Errors 
  1964.   window for the project. 
  1965.  
  1966. o All debugger windows except Results now appear in the OS/2 window list. 
  1967.  
  1968.  
  1969. ΓòÉΓòÉΓòÉ 11.3. Objects, properties, events, and methods ΓòÉΓòÉΓòÉ
  1970.  
  1971. AddString method 
  1972.  
  1973.    o This method now returns the position at which the string was inserted. 
  1974.      Previously, the method returned 0 or 1. 
  1975.  
  1976. AddStringList method 
  1977.  
  1978.    o This method now disables list box repainting while adding strings from a 
  1979.      list, speeding up the operation. 
  1980.  
  1981. Autosize property 
  1982.  
  1983.    o A minimum size is now enforced on all objects. This means that if you set 
  1984.      Autosize on an object with no caption, the object is no longer sized down 
  1985.      to a height and width of zero. 
  1986.  
  1987.    o If you drag and drop a font onto an object with autosize enabled, the 
  1988.      object resizes itself immediately. Previously, you had to turn off 
  1989.      autosize, then turn it on again after dropping the font for the object to 
  1990.      resize itself. 
  1991.  
  1992. ComboBox object 
  1993.  
  1994.    o Combo boxes now resize correctly when the font is changed. 
  1995.  
  1996.    o Drag and drop colors and fonts now work correctly. 
  1997.  
  1998.    o You can now set the Value property at design time. 
  1999.  
  2000.    o The Value property is now updated as soon as an item in the list is 
  2001.      clicked. This means that in the Click event, the Value property will be 
  2002.      the new selection. Previously, it was the old selection. 
  2003.  
  2004. DeleteList method 
  2005.  
  2006.    o This method now disables list box repainting while removing strings from 
  2007.      the list, speeding up the operation. 
  2008.  
  2009. DescriptiveText object 
  2010.  
  2011.    o The TabStop property has been removed. 
  2012.  
  2013.    o The SetFocus method has been removed. 
  2014.  
  2015.    o Autosize no longer causes the last word in the caption to disappear. 
  2016.  
  2017. DropDownComboBox object 
  2018.  
  2019.    o Drop down combo boxes that are in group boxes are now painted correctly. 
  2020.  
  2021.    o The list area of a drop down combo box is now repainted correctly when you 
  2022.      move the object. 
  2023.  
  2024.    o Drop down combo boxes now resize correctly when the font is changed. 
  2025.  
  2026.    o Drag and drop colors and fonts now work correctly. Previously, they were 
  2027.      ignored. 
  2028.  
  2029.    o You can now set the Value property at run time. Previously, this would not 
  2030.      work consistently. 
  2031.  
  2032.    o Previously, clicking in the list box portion of the object would generate 
  2033.      two Click events: one for the click in the list, and one when the entry 
  2034.      field is changed. Now a Click event is generated, followed by a Change 
  2035.      event when the entry field changes value. 
  2036.  
  2037.    o The Value property is now updated as soon as an item in the list is 
  2038.      clicked. This means that in the Click event, the Value property will be 
  2039.      the new selection. Previously, it was the old selection. 
  2040.  
  2041.    o The tracking rectangle for drop-down combo box objects is now only as 
  2042.      large as the visible portion allowing them to be positioned more easily. 
  2043.  
  2044.    o Dropped down lists now repaint properly when moved. 
  2045.  
  2046. EntryField object 
  2047.  
  2048.    o You can now change the width of entry fields with autosize turned on. 
  2049.      However, their height is still unchangeable as stated in the 
  2050.      documentation. 
  2051.  
  2052.    o The default TextLimit has been raised from 32 to 255. 
  2053.  
  2054. GroupBox object 
  2055.  
  2056.    o You can now drag and drop colors from the color palette onto group boxes. 
  2057.  
  2058.    o The TabStop and TabOrder properties have been removed. 
  2059.  
  2060. HelpFile property 
  2061.  
  2062.    o The help file is now closed properly when the program terminates. 
  2063.  
  2064. HelpText property 
  2065.  
  2066.    o Help information loaded from files is no longer followed by spurious 
  2067.      characters. 
  2068.  
  2069. HintText property 
  2070.  
  2071.    o The status area is blanked when the pointer is over a window that has no 
  2072.      hint defined. 
  2073.  
  2074. MoveWithParent property 
  2075.  
  2076.    o Previously, if you unchecked the MoveWithParent property, the edit window 
  2077.      would no longer move with the primary window at design time. This has been 
  2078.      fixed. 
  2079.  
  2080. MultiLineEntryField object 
  2081.  
  2082.    o The Click event now works. 
  2083.    o The Value property now returns the correct result even if the MLE has not 
  2084.      been made visible. 
  2085.    o The MLE no longer strips out carriage returns from its Value property. 
  2086.    o Setting the Value property before making the MLE visible no longer causes 
  2087.      an error. 
  2088.  
  2089. PictureBox object 
  2090.  
  2091.    o The autosize property now causes resizing only when it is turned on, or a 
  2092.      new picture is loaded. 
  2093.  
  2094.    o Now correctly handles the BackColor property. 
  2095.  
  2096. StartThread method 
  2097.  
  2098.    o The StartThread method now returns the thread identifier of the newly 
  2099.      created thread, or -1 if the method was unsuccessful. 
  2100.  
  2101.    o The maximum number of threads has been increased from 32 to 200. 
  2102.  
  2103. TextLimit property 
  2104.  
  2105.    o The TextLimit property has been moved to the Text page of property 
  2106.      notebooks. 
  2107.  
  2108. VRChAttr function 
  2109.  
  2110.    o You can now reset all attributes for a file. 
  2111.  
  2112. VRDir function 
  2113.  
  2114.    o The function now works properly with the mask parameter set to "*.*". 
  2115.  
  2116.    o You can now consistently list the files in the root of an HPFS volume. 
  2117.      Previously, VRDir would list only the "." directory if the fileSpec was of 
  2118.      the form "C:\*.*". 
  2119.  
  2120. VRFileDate function 
  2121.  
  2122.    o The VRFileDate function now allows you to omit either or both of the 
  2123.      second and third parameters. The time can be set without changing the 
  2124.      date, and the date can be set without changing the time. 
  2125.  
  2126. VRFindFile function 
  2127.  
  2128.    o VRFindFile now returns 0 if it is passed an invalid path. 
  2129.  
  2130. VRFini function 
  2131.  
  2132.    o Calling VRFini from the main thread now halts any other threads that are 
  2133.      still running. 
  2134.  
  2135. VRMessage function 
  2136.  
  2137.    o VRMessage now sets the focus correctly. 
  2138.  
  2139. VRPrompt function 
  2140.  
  2141.    o VRPrompt now sets the focus correctly. 
  2142.  
  2143. VRVersion function 
  2144.  
  2145.    o The VRVersion function now works properly. 
  2146.  
  2147.  
  2148. ΓòÉΓòÉΓòÉ 12. Latest updates ΓòÉΓòÉΓòÉ
  2149.  
  2150. (This section is currently empty). 
  2151.  
  2152.  
  2153. ΓòÉΓòÉΓòÉ 13. Errata ΓòÉΓòÉΓòÉ
  2154.  
  2155. There have been two printings of the VXΓêÖREXX Programmer's Guide and Reference. 
  2156. In the first printing (June 1993), no date appears beneath the ISBN number on 
  2157. page ii. In the second printing (August 1993), the date appears at the bottom 
  2158. of page ii. 
  2159.  
  2160.  
  2161. ΓòÉΓòÉΓòÉ 13.1. Corrections to the August 1993 printing ΓòÉΓòÉΓòÉ
  2162.  
  2163. The following table lists some corrections and additions to the WATCOM VXΓêÖREXX 
  2164. Programmer's Guide and Reference. The number in the left column is the page 
  2165. number, and the right column describes the necessary change. 
  2166.  
  2167. 214            In the example program, the line that reads 
  2168.  
  2169.                if( selects.0 = 0 )then do 
  2170.  
  2171.                should read 
  2172.  
  2173.                if( items.0 = 0 )then do 
  2174.  
  2175. 342            If A is specified in the output parameter, but a file has no 
  2176.                attributes set, a hyphen ("-") is returned where the attributes 
  2177.                would normally go. 
  2178.  
  2179.  
  2180. ΓòÉΓòÉΓòÉ 13.2. Corrections to the first (June 1993) printing ΓòÉΓòÉΓòÉ
  2181.  
  2182. The following table lists some corrections and additions to the WATCOM VXΓêÖREXX 
  2183. Programmer's Guide and Reference. The number in the left column is the page 
  2184. number, and the right column describes the necessary change. 
  2185.  
  2186. 68             The last sentence of the second paragraph of the section 
  2187.                "Selecting and deselecting list items" should read: "The 
  2188.                MultiSelect property can be set at design time or at run time." 
  2189.  
  2190. 72             Line three of the example should read  "DataType( value ) \= 
  2191.                "Num" then do". 
  2192.  
  2193. 98             The last sentence of the first paragraph should read "You can 
  2194.                change the default main file by changing the file name specified 
  2195.                for Main file in the Run options dialog accessed from the 
  2196.                Options menu." 
  2197.  
  2198. 128            The first line of the example should read "if (SQLCA.SQLCODE \= 
  2199.                0 & SQLCA.SQLCODE \= -1026) then do". 
  2200.  
  2201. 141            There are several methods missing from the list of methods. See 
  2202.                the online Reference for a full description of these methods. 
  2203.  
  2204.    CenterWindow   Center a window relative to its parent window or the desktop. 
  2205.  
  2206.    DeleteString   Remove a single item from a list. 
  2207.  
  2208.    HaltThread     Stop a thread started with the StartThread method. 
  2209.  
  2210.    InvokeHelp     Invoke help on an object as if the user has pressed F1. 
  2211.  
  2212. 143            The Summary of predefined routines should include the  Halt 
  2213.                section. This section is signalled when your program is halted 
  2214.                while it is running. See the online Reference for more 
  2215.                information. 
  2216.  
  2217. 145            There are several functions missing from the list of functions. 
  2218.                See the online Reference for a full description of these 
  2219.                functions. 
  2220.  
  2221.    VRCreateStem   Create an object using a REXX compound variable to pass all 
  2222.                   of the create-time properties. 
  2223.  
  2224.    VRLoadSecondary Load a window from a file. 
  2225.  
  2226.    VRVersion      Return version information for a VXΓêÖREXX DLL. 
  2227.  
  2228. 160            In the See Also section, the third property should be "Font", 
  2229.                not "CaptionFont". As well, the last paragraph should read: "If 
  2230.                you change the Height or Width properties directly, either at 
  2231.                design time or at run time, the object will resize itself 
  2232.                (AutoSize is ignored). The object resizes itself only when 
  2233.                AutoSize is changed from 0 to 1, or when the font or caption 
  2234.                changes." 
  2235.  
  2236. 161            The BackColor property can also be an RGB value of the form 
  2237.                "(red,green,blue)". There are also a number of additional 
  2238.                predefined color values that correspond to system defaults. See 
  2239.                the online Reference for a complete description of this 
  2240.                property. 
  2241.  
  2242. 163            The BorderColor property can also be an RGB value of the form 
  2243.                "(red,green,blue)". There are also a number of additional 
  2244.                predefined color values that correspond to system defaults. See 
  2245.                the online Reference for a complete description of this 
  2246.                property. 
  2247.  
  2248. 176            In the last sentence of the first paragraph, delete the words 
  2249.                "Create event routine of the ComboBox, or into the". 
  2250.  
  2251. 186            In the first paragraph of the Notes section, add the words "if 
  2252.                necessary" to the end of the second last sentence. 
  2253.  
  2254. 193            Delete the last sentence in the first paragraph, "A Click event 
  2255.                ... is received." 
  2256.  
  2257. 199            The syntax for the FindString method should be: 
  2258.  
  2259.                position = VRMethod( object, "FindString", target, [ 
  2260.                starting-position ], [ search-type ], [ case ] ) 
  2261.  
  2262.                The printed book has starting-position and search-type reversed. 
  2263.  
  2264.                The first sentence in the description of the search-type 
  2265.                argument should be "If specified, this argument must be a string 
  2266.                value that is one of Exact, Prefix, or Substring." 
  2267.  
  2268.                The first sentence in the description  of the case argument 
  2269.                should be "The only possible value for the case argument is the 
  2270.                string value Case." 
  2271.  
  2272. 204            The ForeColor property can also be an RGB value of the form 
  2273.                "(red,green,blue)". There are also a number of additional 
  2274.                predefined color values that correspond to system defaults. See 
  2275.                the online Reference for a complete description of this 
  2276.                property. 
  2277.  
  2278. 208            In the example program, the line that reads 
  2279.  
  2280.                if( selects.0 = 0 )then do 
  2281.  
  2282.                should read 
  2283.  
  2284.                if( items.0 = 0 )then do 
  2285.  
  2286. 214            The GetVar method has an optional extra parameter which can be 
  2287.                used to specify the name of the variable to receive the value. 
  2288.                Also, compound variables used with GetVar must be REXX arrays. 
  2289.                For a complete description of this method, see the online 
  2290.                Reference. 
  2291.  
  2292. 223            The HelpTag property has several predefined values which provide 
  2293.                access to standard OS/2 help panels. See the online Reference 
  2294.                for full details. 
  2295.  
  2296. 245            In the last sentence of the second last paragraph of the Notes 
  2297.                section, delete the words "Create event routine of the ListBox, 
  2298.                or into the". 
  2299.  
  2300. 269            In the Description section, delete the word "metafiles". 
  2301.  
  2302. 271            In the second last paragraph of the Description section, the 
  2303.                first sentence should start "a string specifying the id of an 
  2304.                icon or bitmap resource...". 
  2305.  
  2306. 273            The Post method is not properly described in the printed 
  2307.                Reference. See the online Reference for full details on this 
  2308.                method. 
  2309.  
  2310. 279            The PutVar method has an optional extra parameter which can be 
  2311.                used to specify the name to use for the stored value. Also, 
  2312.                compound variables used with PutVar must be REXX arrays. For a 
  2313.                complete description of this method, see the online Reference. 
  2314.  
  2315. 308            The StartThread method is not completely described in the 
  2316.                printed Reference. See the online Reference for full details on 
  2317.                this method. 
  2318.  
  2319. 335            If A is specified in the output parameter, but a file has no 
  2320.                attributes set, a hyphen ("-") is returned where the attributes 
  2321.                would normally go. 
  2322.  
  2323. 343            The VREvent function is not correctly described in the printed 
  2324.                Reference. See the online Reference for full details on this 
  2325.                function. 
  2326.  
  2327. 347            In the description of the newdate argument, the sentence in 
  2328.                brackets should be "as returned by the REXX Date( "sorted" ) 
  2329.                function". 
  2330.  
  2331. 365            In the example, in the response = VRMessage ( ... ) function 
  2332.                call, the  parameter "button." should be "buttons.". 
  2333.  
  2334. 369            In the example, in the response = VRMessage ( ... ) function 
  2335.                call, the  parameter "button." should be "buttons.". 
  2336.  
  2337. 373            In the Arguments section, delete the sentence in the description 
  2338.                of the filespec argument that starts with "If filespec is 
  2339.                null...". 
  2340.  
  2341.                The last sentence in the description of format should read "If 
  2342.                format is omitted, a default of DPNE is used." 
  2343.  
  2344.  
  2345. ΓòÉΓòÉΓòÉ 14. Contacting WATCOM ΓòÉΓòÉΓòÉ
  2346.  
  2347. Although a significant amount of testing has gone into WATCOM VXΓêÖREXX, errors 
  2348. in the software may be encountered. You may also discover errors or omissions 
  2349. in the documentation. If you find any problems or have some good suggestions, 
  2350. we would like to hear from you. 
  2351.  
  2352. A form is included in the Read Me First booklet for you to use to report any 
  2353. problems or suggestions. When reporting a problem, please make a blank copy of 
  2354. this form, in case you have further problems or suggestions. When you have 
  2355. filled it in, make a second copy and keep it for your records. 
  2356.  
  2357.  
  2358. ΓòÉΓòÉΓòÉ 14.1. In North America (and all other non-European locations) ΓòÉΓòÉΓòÉ
  2359.  
  2360. WATCOM International Corporation. 
  2361.  
  2362. 415 Phillip Street, Waterloo, Ontario, CANADA, N2L 3X2 
  2363.  
  2364. Technical Support
  2365. hot-line:   (519) 886-3700
  2366. fax:        (519) 747-4971
  2367. BBS:        (519) 884-2103
  2368. Internet:   tech@watcom.on.ca
  2369. Compuserve: type GO WATCOM
  2370.  
  2371. General Inquiries
  2372. tel: (519)886-3700
  2373. fax: (519)747-4971
  2374.  
  2375. Sales, upgrades, other product
  2376. orders, and reseller inquiries/orders:
  2377. 1-800-265-4555 (toll free in North America)
  2378.  
  2379.  
  2380. ΓòÉΓòÉΓòÉ 14.2. In Europe ΓòÉΓòÉΓòÉ
  2381.  
  2382. WATCOM Europe Limited. 
  2383.  
  2384. PO Box 64, LIVINGSTON, West Lothian, EH54 7AE, UNITED KINGDOM 
  2385.  
  2386. Technical Support
  2387.     United Kingdom
  2388.         tel: 0506 460112
  2389.         fax: 0506 460115
  2390.  
  2391.     Other Locations
  2392.         tel: (44) 506 460112
  2393.         fax: (44) 506 460115
  2394.  
  2395.     BBS: (519) 884-2103
  2396.     Internet: tech@watcom.on.ca
  2397.     Compuserve: type GO WATCOM
  2398.  
  2399. General Inquiries
  2400.     United Kingdom
  2401.         tel: 0506 460112
  2402.         fax: 0506 460115
  2403.  
  2404.     Other Locations
  2405.         tel: (44) 506 460112
  2406.         fax: (44) 506 460115
  2407.  
  2408. Sales, Upgrades, other product orders, and reseller inquiries/orders:
  2409.     United Kingdom Toll Free
  2410.         tel: 0800 44 44 55
  2411.         fax: 0800 55 54 55
  2412.  
  2413.     Germany Toll Free
  2414.         tel: 0130 81 88 62
  2415.         fax: 0130 81 88 63
  2416.  
  2417.     France Toll Free
  2418.         tel: 05 90 81 35
  2419.         fax: 05 90 81 36
  2420.  
  2421.     All Other Locations
  2422.         tel: (44) 506 460112
  2423.         fax: (44) 506 460115
  2424.