Pure4GLTv a clone of the MS treeview in pure ABL - Wiki - OpenEdge General - Progress Community

Pure4GLTv a clone of the MS treeview in pure ABL

Pure4GLTv a clone of the MS treeview in pure ABL


This object provides an alternate solution to using a treeview OCX, and  demonstrate the power of ABL to achieve fast and sophisticated UI Objects. It  supports all the basic treeview features, as well as drag and drop, node moves,  popup menu's, plus it can load nodes in a very fast way (1000 nodes in 0.73  seconds on a 2GHz CPU, so faster than the MS OCX).

It works fine on Linux  with Wine (much easier than with OCX's) so it helps to open the door to this  configuration. The package includes sample code and documentation.

Fixed missing usage of the {&pure4gltvrootpath}  preprocessor in an include file reference that used to be OK before

Added code to the updateNode API so it can also handle the  new node options introduced in October last year.

25-FEB-2008 (actually done on 25-JAN-2008):
Improved the creation of dyn  popup menu on right click by first deleting a possible existing dyn popup menu.  Before that, it was sometimes necessary to do a double right-click in order to  obtain a wanted popup menu.

Ability to set the fgcolor, bgcolor, font and tooltips at the  node level.

Added the ability to define the root path of pureabltv so one  can embed it in a package without any external dependency (case of ABHack). The  windows.p and winfunc.p are also modified to work with the root path.

Fixed little regression due to the previous fix... the  CAN-DO('+,-,*', LAST-EVENT:LABEL) could catch any printable event due to the '*'  item Solution was to use CAN-DO('+,-,~~~*', LAST-EVENT:LABEL)

Fixed regression introduced with the search on keyStroke for  the '-', '+' and '*' key events. Indeed, they were caught by the focusCatcher  combo-box to perform search on keyStroke instead of letting the fMainKeyEvent  procedure doing the initial collapse, expand or expandAll  functionalities

1) Added support of the Aero skin for winVista
2) Review  to remove errors returned by functions for compliance with more consistent error  handling introduced in 10.1C See the release notes for more  information

19-JUN-2007: New option in addNode of pure4glTv to superceed the autoSort TV  option for one single node, and made abhack use it for the parameters. See  header comment of addNode() for more info

1) New ApplyEntry strong override to really apply entry to  the treeview by using the focusCatcher combo.

2) New search by keyStroke  feature. When the focus is in the treeview (actually in the hidden focusCatcher  static combo), pure4gltv now maintains a string composed by the last keystrokes  with up to 1500ms between each strike (above this time, the string is reset to  blank), then searches the next brother node (same parent as current node) which  label begins with the mentioned string. The search uses an index against parent  + label that has always been present, so this feature is very fast and  cool.

When we cannot find a next brother based on the searched label,  then pure4gltv tries to find a first brother node. Of course, when the search is  successful, then the found brother node is selected and brought into the  viewPort if necessary with the selectNode API

3) Added protection against  unsupported skins like aero now for WinVista (until) someone sends me the  necessary pictures). When I find out the theme is not supported in the tvSkins  directory, pure4gltv goes into classic mode and gives some details in the  tooltip of the EMPTY square on the right bottom corner.

1) implemented a new nodeDisplay event a bit similar to a  Browse ROW-DISPLAY event (see release notes)
2) Provided additional pictures  to be used in a new prospy++ and in ABHack

24-JAN-2007: Supply a few additional treeview pictures to be used in an  enhanced version of the Prospy++ that works with the OE 10 new Log  Manager

12-NOV-2006: Fixed little cosmetic issue on resizeObject: if the treeview is  empty, then hide the scrollbars in the tvframe

Jully 2006: Restructuration regarding the support of multiple skins (XP Luna,  Royale and Classic included). A few new API's like getSelectedNodeKey(). New  expandAll functionality on '*' key. Little cosmetic issue consisting in moving  the vertical scrollbar by one pixel on the right...

29-MAR-2005: Changed Doc to PDF, improvement of scrolling with keyboard, fix  of few minor cosmetic issues, implementation of a preprocessor to use the  windows.p library shipped with Dynamics.











  • I would like to give my compliments to the developer of this SmartObject.

    Now Progress has released a Windows 64bit Client this SmartObject can replace the MS Windows OCX treeview which is only available in 32bits.

    I hope you would pickup this project and add some few standard SmartObject procedures in it.

    If possible the procedure repositionObject.to set the Object at required possition when you re-size the window.

    Kind regards,

    Peter Wokke

  • This control works fine with OE 11.5 64bit, but GetKeyboardState fails on OE11.7 64 bit.

    The following change fixed the issue:






    PROCEDURE GetKeyboardState EXTERNAL "user32.dll":

      DEFINE INPUT  PARAMETER KBState AS {&PBYTE}. /* memptr */


      DEFINE RETURN PARAMETER RetVal  AS LONG. /* bool   */