Inofficial VX/REXX buglist (Nov. 24th 2001)
---------------------------------------

All bugs etc. discovered with Watcom VX/REXX 2.1d

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


C/S edition bugs
----------------

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?]


Please send any comments/additions to
bmaerkisch AT web.
