Bug Fixes

  • bBrowser and bDataColumn

    The columns are destroyed when the method bBrowser:Use() is called or the bBrowser is destroyed.

  • bBrowser and cell input
    Fixed an error that occurs when pasting a value from the clipboard into the cell edit control.

  • bBrowser and bKeyCommand
    It is checked after the execution of a bKeyCommand now whether the ALT key was pressed. In this case all WM_SYSCHAR events are removed from the event queue. This is necessary because the hot key of a menu could otherwise be executed.

  • bBrowser and DBServer with scope
    Fixed an error which could occur when a scope was defined in a DBServer and the DBServer was skiped to EoF. In this case the RecNo was not correct.

  • bBrowser and AdoServer:SetFilter()
    Fixed an error which could occur when a filter on bookmarks was defined in an AdoServer and then a field value was changed in a record.

  • bArrayServer:FieldPut()
    If a numeric value with decimals was put into a numeric field without decimals, then the decimals were put in the field, too. This bug is fixed now. The numeric value is converted with the function Integer() into an integer now and then put it into the field.


Bug Fixes

  • bBrowser:PropertyPut(#ScrollThumbDragRefresh)
    The value for the Property #ScrollThumbDragRefresh was evaluated wrongly. At the value FALSE the visible records was permanently updated at the scrolling with the slider and at the value TRUE only when the scroll process is ending. However, the meaning of the values is defined as follows. At TRUE the visible records are permanently updated and at FALSE only when the scroll process is ending. The values are evaluated correctly now.

  • bCompoundValue and rotated text
    A rotated text (Font:Rotation > 0) was not displayed correctly from the class bCompoundValue.

  • bDBServer:SuspendNotification()
    According to the documentation the call of the method bDBServer:SuspendNotification() returns a numeric value. Instead the server object is returned. The return value of the method was changed now that it agrees with the documentation. The same also applies to the method bDBServer:ResetNotification().

  • bDSSelection and ADS
    The ADS always works with the '.' as a decimal separator in the function Str(). This is independent which setting is defined in VO with the function SetDecimalSep. For this reason the decimal separator is set before and restored after evaluating the selection (see method bDSSelection:Update()).


Bug Fixes

  • bBrowser and VO 2.7b

    Solves some issues with VO 2.7b.


Bug Fixes

  • bBrowser:SetContextMenu()
    If one or more context menus were set with the method bBrowser:SetContextMenu(), then these were not destroyed when the bBrowser were destroyed. This caused a memory leak.

Bug Fixes

  • bBrowser:AutoRefreshTime
    By a previous patch the AutoRefresh functionality (bBrowser:AutoRefreshTime) was not supported any more. This problem was solved now so that the AutoRefresh functionality is supported again.

  • bBrowser and NULL-Values in column footer
    If a NULL value (0, FALSE, NULL_DATE, ...) was assigned to a column footer (bDataColumn:Footer), then this value was not displayed.

  • bBrowser and background color for column caption and footer
    The area for the column caption or footen was drawn in the color gray till now if this was not visible (see also bDataColumn:CaptionVisible or bDataColumn:FooterVisible). Now, the background color which is defined in the bViewStyle for the column caption or footer is used. If no background color is defined, then the area is drawn in the color gray.

  • bArrayServer:RecordPut()
    Till now, an available sorting was not updated at the call of the method bArrayServer:RecordPut(). This problem was solved now. If the sorting shall not be updated, then the value FALSE can be submitted in the new argument <lUpdateOrder>. The value TRUE is used as default.


Bug Fixes

  • bBrowser and scrollbars
    In Windows 2000 and Windows XP can be displayed context menus for the scrollbars. Till now, the menu items "Top" and "Bottom" were not supported in these context menus. This problem is solved now.

  • bIcon
    In VO 2.7a it could happen that the icons were not shown or suddenly disappeared.


Bug Fixes

  • bBrowser:IsCaptionClickable()
    The bBrowser has not invoked the methods internally till now. The methods were only for the programmer to be able to determine the states. The bBrowser invokes the methods internally now, too. It is therefore possible to implement a new class inherits from the bBrowser and to overwrite the methods to change the behavior of the bBrowser.

  • bDBServer:SuspendNotification()
    A program crash occurred in the method bDBServer:SuspendNotification() under certain circumstances.

  • bArrayServer and DataFormat BDATAFORMAT_DBASE
    A bArrayServer object can be created with a data array in the argument <auData>. The data array contains the data to the defined fields. If for a field with the data type String the length of the value from the data array is greater than the defined field length then the value is cut on the defined field length now.


Bug Fixes

  • bBrowser:ResizeBuffer()
    Under certain circumstances the bBrowser crashed sporadically in the method bBrowser:ResizeBuffer(). This bug is solved now.

  • bDataColumn and numeric values
    Numeric values in a column are always drawn as string. To convert a numeric value into a string, the method bDataColumn:FieldSpec:Transform() is called. But this call creates a string with leading blanks. If such a value shall be shown with left alignment in the column, then the leading blanks are disturbing very much. Because of this all leading blanks are removed now.

  • bIcon:Size
    The strong typing was removed.

  • bCompoundValue + CRLF
    CRLF in bCompoundValue are supported correctly now.

  • bCompoundValue:GetValue()
    If for the argument <iValue> the value 1 was passed on then a NULL_OBJECT was returned instead of the first value.

  • bCompoundValue:DeleteValue()
    If for the argument <iValue> the value 1 was passed on then the first value wasn't deleted.


Bug Fixes

  • bBrowser and ClipperKeys
    The bBrowser supports the return key correctly now, if ClipperKeys are activated in its owner. Pressing the Return key was ignored till now if ClipperKeys were activated.

  • bBrowser:CurrentColumn
    If with the assign bBrowser:CurrentColumn the current column is set, then the cell edit is activated now at the setting bBrowser:AutoEdit #Permanent.

  • bBrowser:SkipToCell()
    The method supports the new argument <lAutoEdit>. The argument defined, whether at the setting bBrowser:AutoEdit #Permanent a cell edit shall be activated automatically. If the argument is not specified, then the value TRUE is used as default.

  • bBrowser:AutoEdit #Excel
    When pressing the return key, then the callback method CellDoubleClick() is called at the setting bBrowser:AutoEdit #Excel now. This behavior was already supported at the other settings of bBrowser:AutoEdit.

  • bBrowser:AutoEdit #Permanent
    At the setting bBrowser:AutoEdit #Permanent the possibility is supported now, to canceling the cell edit within the callback method CellEdit() and moving the table cursor on another cell.

  • bBrowser and cell edit
    If error messages were shown within the callback method CellEdit(), it could happen that the error message was displayed repeatedly.

  • bCompoundValue
    The position of a subordinate bCompoundValue wasn't relatively shown to the primary bCompoundValue.

  • bDBServer:SetSelectiveRelation()
    The support of the selective relation contained an bug if the controlling order was descending.


Bug Fixes

  • bBrowser and the own DBF format ADT from ADS
    The bBrowser had problems with the own DBF format ADT from ADS, if the database contained deleted records.


Bug Fixes

  • bBrowser and cell edit
    If a cell edit were accept with the RETURN key, then played a beep under certain circumstances.

    If a cell edit were accept with the TAB key, then under certain circumstances the callback method CellEdit() was called 2 times with the mode BEDIT_END.

    If due to an cell edit validation a standard error message were displayed by the bBrowser, then the caption of the error message was in German. This concerns only the bBrowser international.

  • bBrowser and vertical column values
    If for the column values a font with rotation (see also bFont:Rotation) were defined, then the column values were not drawn correctly.

  • bBrowser:GoTop()
    Before a record movement the data server sent no NotifyIntentToMove notification to the registered clients.

  • bBrowser and vertical column values
    If in the detail server of a selective relation no result existed, then a wrong value was returned.


Bug Fixes

  • Selective Relation without result
    If in the detail server no result were contained of a selective relation and then in the detail server the arrow up key were pressed, then the detail server was wrongly positioned.

  • Selective Relation and speed
    The speed of selective relations was improved with large data bases.


Bug Fixes

  • bBrowser and change column width with the mouse?
    With changing the column width with the mouse, in the Windows taskbar a empty window was always shown. This problem is now solved.

  • bBrowser and DBServer:OrderScope
    If in the DBServer a OrderScope was set and no records existed to the OrderScope, then an empty record was shown in the bBrowser.

  • bBrowser:Refresh()
    With bBrowser:SelectionMode #Simple could arise it, that after the call of bBrowser:Refresh() several records were selected.

  • bArrayServer:FieldPos(),
    If field names were specified as string, it could occur that these were not found, if not the exact spelling (upper and lower case) were considered. This problem is now solved.

  • bComboEdit
    Outside of the bBrowser the control bComboEdit did not work correctly, if in the opened choice dialog a value were accepted by pressing the ENTER key or by a mouse double click. In this case the choice dialog was opened automatically again.


Bug Fixes

  • bDataColumn:Init()
    If a column is created with the <symFieldMode> #Access or #AccessAssign and no field in the data server exists to the access, a HyperLabel is created for the column automatically now. Otherwise the HyperLabel is used for the field.

  • bBrowser and bGrid:BackgroundList
    If a bGrid:BackgroundList is defined in the bBrowser or in an opened column, this is shown in the grid now if the data server does not contain any records.

  • bBrowser:GridInEmptyArea
    If bBrowser:GridInEmptyArea is True, the color conditions of the bBrowser or a defined BackgroundList in the Grid of the bBrowser are used when drawing in the empty area of the bBrowser.

  • bBrowser:CaptionArea,
    The accesses has always returned an area whose width and height at 1 pixels were too large.

  • bArrayServer and Sorts
    During the processing of sorts (CreateOrder(), Append(), Delete(), OrderInfo()) errors in the sort expression and/or sort condition are intercepted now. The methods do not break any more now but create a error object.

  • bDBServer:SuspendNotification()
    The methods bDBServer:SuspendNotification() and bDBServer:ResetNotification() are called also in the servers of the relations now.


Bug Fixes

  • bBrowser and delete record
    Now it is scrolled automatically toward file beginning (SetDeleted(True)), if the last record is visible however not the first record.

  • bBrowser and delete records in detail server of a selective relation
    If in the detail server of a selective relation a record is deleted, now also the vertical scrollbar is updated so far as the deleted records are not visible (SetDeleted(True)).

  • bBrowser and filter
    If in the server a filter were active and the current record were no more contained in the filter by a change of field value, the bBrowser was not correctly updated. Additionally it could occur with following record movements that the bBrowser did not react any longer.


Bug Fixes

  • bBrowser and data server with 1 record

    Since the patch 1.4.17 no data were displayed if the server contained only 1 record.


Bug Fixes

  • bDBServer and RecordFilter
    If in the RecordFilter a RecNo were specified, which was larger than DBServer:LastRec then the bDBServer caused a program crash, if additionally an order was active.


Bug Fixes

  • bBrowser:EditClose()
    Sometimes with Windows XP it came with edit controls of the class ComboBox to program crashes.

  • bBrowser and ADS
    Improved support of the ADS RDD "ADSADT", if the record recycling is active (as deleted marked records are reused with an append).

  • bBrowser and ADS 6.11
    The RDD of ADS 6.11 does not support the access DBServer:OrderKeyNo any longer as performant as in previous versions. The speed problem (>200% more slowly) occurs, if SetDeleted() is on TRUE. The Browser uses the access DBServer:OrderKeyNo to position the slider in the vertical scrollbar. The speed problem affects thus directly to the speed of the bBrowser. The problem can be solved if around the call of DBServer:OrderKeyNo the following code is implemented.


    lDeletedOld := SetDeleted(False)



    iKeyNo := oServer:OrderKeyNo




    This workaround is now implemented in the bBrowser.

  • bArrayServer:Pack()
    An existing order was not correctly processed with the method bArrayServer:Pack().


Bug Fixes

  • bBrowser:TabKeyMode
    With the bBrowser:TabKeyMode

    • #MoveToEditableCell oder

    • #MoveToSelectableCell

    the focus was not moved correctly by the bBrowser to the next and/or previous control.

  • bBrowser:TabKeyMode and bBrowser:AutoSkip
    With the bBrowser:TabKeyMode

    • #MoveToEditableCell or

    • #MoveToSelectableCell

    in connection with bBrowser:AutoSkip=True the focus was passed to the next control if the table cursor was on the last column and the TAB key was pressed. This behavior is wrong. The focus may be passed to the next control only if bBrowser:AutoSkip contains the value False or the table cursor is on the last record and no bBrowser:AutoAppend is active.

    For all, which used this failure of the bBrowser, now the possibility exists to assign the symbol value #WhenFocusChange to bBrowser:AutoSkip. With this new value the bBrowser behaves as before.


Bug Fixes

  • bBrowser and vertical Scrollbar
    With the bBrowser:RowMode #Absolute the thumb button of the vertical scrollbar is more optimally supported.

  • bBrowser:Recalculate()
    With ScrollbarMode #Auto the scrollbars was not always hidden, if all data within the visible area could be shown.


Bug Fixes

  • bBrowser and Seek
    With a Seek in the linked server the bBrowser positions the found record now into the center of the data area.

  • bBrowser and one visible record
    If in the bBrowser only one record were visible, it could come with vertical navigating to failure and/or program crashes.

  • bBrowser:EditClose()
    If during a cell input, the edit control were scrolled out the the visible area with the vertical scrollbar and afterwards another record were clicked with the mouse, the bBrowser flickered.


Bug Fixes

  • bArrayServer:Seek()
    bArrayServer:Seek() never found a record, if bArrayServer stood on EoF before.

Bug Fixes

  • bArrayServer:CreateOrder()
    The definition of a FOR condition caused an error.

  • bDataColumn and column caption
    If in the column no own caption is defined, the value from


    is used, if this is defined.


Bug Fixes

  • bBrowser:EditCreate()
    Now edit controls are supported also which are inherited from the classes

    • SingleLineEdit,

    • MultiLineEdit and

    • RichEdit

    The VerticalSpinner is now also correctly supported.

  • bBrowser:Cut(), bBrowser:Paste()
    Cut & Paste are supported during a cell edit.

  • bDBServer and RecordFilter
    With existing indexes the records were not always processed in the correct order.

    With the RecordFilterMode=DBRFM_EXCLUDE with bDBServer:Seek a record was never found.


Bug Fixes

  • bGUI Classes
    The DLL could not be dynamically loaded and unloaded afterwards again.

  • Right mouse button and context menu
    If the right mouse button were pressed on a negative position, the program crashes.


Bug Fixes

  • bItemList:Put()
    New method for setting an element.

  • bBrowser:TabKeyMode
    The TabKeyMode could cause in Windows 2000 programm crashes.

    If the bBrowser were the only control, the table cursor moved to the next/previous row even if the mode bBrowser:AutoSkip were not enabled.


Bug Fixes

  • bDataColumn:PropertyPut():
    New properties could not be set.

  • bDataColumn:PropertyDelete(),
    New property: #EditClass
    Name of the class (as Symbol) that is to be used for editing a cell value.


Bug Fixes

  • bBrowser and Drag&Drop
    Drag&Drop between different bBrowsers is supported now.

    See also in online documentation:

    • bCellDragDrop (Class)

    • bBrowser:DragDropMode (Access/Assign)

    • bBrowser:Drag()

    • bBrowser:CellDragDrop()

    • bSample - DragDrop


Bug Fixes

  • bBrowser and ALT Key
    The ALT key was not correctly supported both in menus and in bKeyCommand.


Bug Fixes

  • bBrowser:CellEdit()
    With the call of self:oEdit:PerformValidations() the old and not the new value were examined, if no callback method CellEdit() were defined in the owner.


Bug Fixes

  • bBrowser:CellEdit()
    With the call of self:oEdit:PerformValidations() the old and not the new value were examined. With the call of self:oEdit:__Update() now the new value is examined.

  • bBrowser:PropertyDelete(),
    New property: #DefaultButonManage
    Logical value defines whether the default PushButton is to considered, if the bBrowser has the focus and the RETURN key is pressed.


Bug Fixes

  • bBrowser and Keyboard Commands
    In key commands (class bKeyCommand) the TAB key is supported now.

  • bBrowser:CellEdit()
    If in the owner of the bBrowser no callback method were defined, the edit control was not validated.

  • bArrayServer:Skip()
    Crash in the bArrayServer:RecordFilter, if the method bArrayServer:Skip() were called without argument.


Bug Fixes

  • bBrowser:NotifyDelete()
    If the lined data server in the bBrowser were a bArrayServer and the setting for deleted records were different than the setting of SetDeleted(), it could be that deleted records were not always removed from the bBrowser.


Bug Fixes

  • bBrowser and empty grid
    If for the grid in the bBrowser the value NULL_OBJECT were set, then the program crash.