VOTools for Visual Objects  
and Vulcan.NET  

bBrowser => Patches => bBrowser 1.4 (Limited) => bBrowser 1.4 (Limited) Patch 1.4.34    

 bBrowser 1.4 (Limited) Patch 1.4.34
Date: 15-05-2007

Visual Objects 2.8 (Build 2816 - 2830)
Visual Objects 2.7b-1 (Build 2756)

Visual Objects 2.7b (Build 2740)

Description: The patch can be used for bBrowser 1.4 (Limited).

bBrowser 1.4 (Limited)
VO 2.7b
(Build 2740)
[2.23 MB]

  • 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()).
  • bBrowser and VO 2.7b
    Solves some issues with VO 2.7b.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • bBrowser and data server with 1 record
    Since the patch 1.4.17 no data were displayed if the server contained only 1 record.
  • 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.
  • 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().
  • bBrowser:TabKeyMode
    With the bBrowser:TabKeyMode
    - #MoveToEditableCell or
    - #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 oder
    - #MoveToSelectableCell
    in connection with bBrowser:AutoSkip=TRUE the focus was moved to the next control, if the table cursor were on the last column and the TAB key were pressed. This behavior is wrong. The focus may be moved only to the next control, if bBrowser:AutoSkip contains the value FALSE or the table cursor is on the last record and bBrowser:AutoAppend is not 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.
  • bBrowser and vertikaler Scrollbalken
    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.
  • 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 1 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.
  • bArrayServer:Seek()
    bArrayServer:Seek() never found a record, if bArrayServer stood on EoF before.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • bBrowser and ALT-Taste:
    The ALT key was not correctly supported both in menus and in bKeyCommand.
  • 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.
  • 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.
  • bBrowser and Tastaturbefehle:
    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.
  • 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.
  • bBrowser and empty grid:
    If for the grid in the bBrowser the value NULL_OBJECT were set, then the program crash.
Copyright © 2003-2015 BEFO GmbH