Inofficial VX-REXX buglist
This is a list of VX-REXX 2.1d bugs that was originally collected and published by Bastian Märkisch and but has been updated by the EDM/2 contributors.
Contents
ComboBox / DropDownComboBox object
These objects don't handle the LM_INSERTMULTITEMS PM messages (unlike 'ordinary' PM combo boxes)
Fix: send this message to child with id 0x instead
ComboBox object
Combo boxes no longer accept input from keyboard if they have a 'KeyPress' event routine assigned
Fix: [if you know any, please submit!]
Accelerators (feature)
Accelerators of windows with the 'Visible' property set to '0' don't have their accelerators deactivated.
Fix: [if you know any, please submit!]
KeyString property
(at least on German keyboards). The comma on the numeric key block is always assigned '{Del}' independent from current NumLock setting
Fix: [if you know any, please submit!]
PostEvent method (undocumented behaviour)
'FocusObject' parameter is defined for retrieval by VRInfo (not documented) - (there might be even more - not checked)
Button / Verify Event (feature)
If a button has 'NoPointerFocus' set to '1' this disables the generation of 'Verify' events when the button is activated
Fix: you might consider to fix this behaviour by adding the following code to the button's 'Click' event routine
AnyButton_click: procedure /* important: only local signal handler */ object = VRInfo( "Object" ) verified = VRInfo( "Verified" ) /* object of previous verify, if any */ focus = VRMethod( "Screen", "GetFocusWindow", "Object" ) /* get real focus object */ if VRGet( object, "NoPointerFocus" ) & \ /* handle verifies ? */ (verified \= focus) & \ /* verified it before ? */ (focus \= '') then do /* is there a focus object ? */ signal on syntax name AnyButton_Syntax verify = VRGet( focus, "Verify" ) signal off syntax /* rude way to determine if object has a verify event, */ /* could have used 'ListProperties' method instead */ if verify \= '' then do /* does object have verify event ? */ ok = VRMethod( focus, "PostEvent", "Verify" ) /* post verify event to focus object */ ok = VRMethod( object, "PostEvent", "Click", "Verified", focus_window ) /* re-post click event to button and give */ /* the verify event routine a chance to cancel */ return end end AnyButton_Syntax: /* go on with the real work */ /* ... */ return
VRLoadSecondary function
Standard 'VRLoadSecondary' in section 'Main' generates NoValue exceptions
Fix: replace VRLoadSecondary in Main section with the following code
VRLoadSecondary: __vrlsWait = abbrev( 'WAIT', translate(arg(2)), 1 ) if __vrlsWait then call VRFlush if arg(3,"Exists") then __vrlsParent = arg(3) else __vrlsParent = VRWindow() /* __vrlsParent = VRInfo( 'Window' ) */ __vrlsHWnd = VRLoad( __vrlsParent, VRWindowPath(), arg(1) ) if __vrlsHWnd = '' then signal __vrlsDone if \ __vrlsWait then signal __vrlsDone call VRSet __vrlsHWnd, 'WindowMode', 'Modal' if( symbol('__vrlsWindows.0') \== 'VAR' ) then __vrlsTmp = 1 else __vrlsTmp = __vrlsWindows.0 + 1 __vrlsWindows.__vrlsTmp = VRWindow( __vrlsHWnd ) __vrlsWindows.0 = __vrlsTmp do while( VRIsValidObject( VRWindow() )) __vrlsEvent = VREvent() interpret __vrlsEvent end __vrlsTmp = __vrlsWindows.0 __vrlsWindows.0 = __vrlsTmp - 1 call VRWindow __vrlsWindows.__vrlsTmp __vrlsHWnd = '' __vrlsDone: return __vrlsHWnd
VX/REXX IDE (bug)
IDE crashes when trying to delete a section which starts with an underscore
VX/REXX IDE and ObjectRexx
VX/REXX's routine to retrieve error information from a program 'VRERRTXT' crashes on line 3, no error information
Client/Server edition bugs
Installation issues
The 2.1 version of Watcom VX-REXX Client/Server Edition will not install correctly on modern versions of OS/2, this may also impact the normal version of the system but has not been tested.
Query object (severe)
The 'RowData' method does not check if there actually is data available; if not calling 'RowData' might cause system hangs!
Fix: Check for data first (e.g. with 'MoveFirst')
Query object
QueryManager
The 'Search' method and QueryManager interpret all colons in SQLStatement as references to variables even if they are inside strings
Fix: [not known]
QueryManager
Query manager can't properly handle references to stem variables in 'SQLStatement'
Fix: just ignore it - the 'Query' object can handle them
Query object: Bound variables
Only numeric fields are properly supported by the 'BindVar' method, since no string delimiters are placed around the value. This leads to errors when interpreting the generated events.
Fix: no general fix - don't use it, use 'RowData' method instead
If you really need to use it you might consider the following:
Use a specific naming convention for bound variables: e.g. 'BoundVar'xxxx
Insert the following code into the main loop in 'Main' section:
... do while( \ VRGet( _VREPrimaryWindow, "Shutdown" ) ) _VREEvent = VREvent() /* hack for bound vars */ if abbrev(_VREEvent,'BoundVar',8) then do parse var _VREEvent __FixVar__ '=' __FixValue__ _VREEvent = __FixVar__ "= '" || strip(__FixValue__,'L') || "'" end interpret _VREEvent end ...
BTW: Does anybody know why it was implemented using events in the first place?