VOTools for Visual Objects  
and Vulcan.NET  

bBrowser => Patches => bBrowser 1.5 => bBrowser 1.5 Patch 1.5.18.1    




 bBrowser 1.5 Patch 1.5.18.1
Download starten
Datum: 14.11.2008
Dateigröße: 2,94 MB
VO-Versionen: Visual Objects 2.8 SP2 (Build 2830)
Visual Objects 2.7b
CA-Visual Objects 2.6
Hinweis:

Das Patch kann für die Versionen bBrowser Standard 1.5 und bBrowser Professional 1.5 verwendet werden.

 
 Patch-Historie   
1.5.18
  • bBrowser und bDataColumn
    Beim Aufruf der Methode bBrowser:Use() oder beim Zerstören des bBrowser werden nun auch die bereits vorhandenen Datenspalten zerstört.


  • bBrowser:Resize()
    Bei eingeschalteter variabler Zeilenhöhe wurde der bBrowser nicht immer korrekt neu gezeichnet.

  • bBrowser und variable Zeilenhöhe
    Korrigiert einen Fehler bei der automatischen Berechnung der Zeilenhöhe.

  • bBrowser und ToolTips
    Bei dem ToolTipMode #Column konnte es vorkommen, dass leere ToolTips angezeigt wurden. Dieses Problem ist nun behoben.

  • bBrowser:RecordSave()
    Die Methode hat nicht den BoF- und EoF-Status gesichert.

  • bBrowser:RecordRestore()
    Bei einem SQL-Datenserver wurde der EoF-Status nicht korrekt restauriert.
1.5.17
  • bBrowser:GetDefaultFont()
    Die neue Methode erzeugt ein Objekt der Klasse Font und gibt dieses zurück. Das Font-Objekt definiert die Standard-Schrift, die im bBrowser verwendet wird.

    ACHTUNG !!!
    Mit jedem Aufruf der Methode wird ein neues Font-Objekt erzeugt.


  • bBrowser:AutoRefresh() und SQL
    Wenn der bBrowser:ServerType den Wert #SQL enthält und dann ein bBrowser:AutoRefresh() ausgeführt wird, dann wird nun der Datenserver wieder auf den vorher aktiven Datensatz positioniert.

  • bBrowser und Mehrfachselektion
    Bei aktiver Mehrfachselektion kann die Selektion der aktuellen Zelle durch gleichzeitiges Drücken der Tasten STRG und Leertaste bzw. der STRG-Taste und der linke Maustaste verändert werden. In diesem Fall wurde aber nicht die Callback-Methode CellSelect() aufgerufen. Dieses Problem wurde behoben, sodass nun auch die Callback-Methode CellSelect() aufgerufen wird.

  • bBrowser und MouseButtonDown()
    Wenn die linke Maustaste auf einer Spaltenbezeichnung oder einem Spaltenfuß gedrückt wird, dann wird nicht mehr das Event WM_NCLBUTTONDOWN gesendet sondern das Event WM_LBUTTONDOWN. Dies führt dazu, dass nun die Methode MouseButtonDown() im bBrowser aufgerufen wird. Das gleiche gilt auch für die anderen Maustasten.

  • bBrowser und MouseButtonDoubleClick()
    Wenn die linke Maustaste doppelt auf einer Spaltenbezeichnung oder einem Spaltenfuß gedrückt wird, dann wird nicht mehr das Event WM_NCLBUTTONDBLCLK sondern das Event WM_LBUTTONDBLCLK gesendet. Dies führt dazu, dass nun die Methode MouseButtonDoubleClick() im bBrowser aufgerufen wird. Das gleiche gilt auch für einen Doppelklick mit den anderen Maustasten.

  • bBrowser und DBServer:EoF
    Behebt ein Problem, bei dem der Zugriff DBServer:EoF den Wert FALSE zurück gibt, obwohl der Server auf EoF steht.

  • bDataColumn und Ausrichtung der Spaltenbezeichnung
    Wenn für die Datenwerte einer Spalte die Ausrichtung gesetzt wurde, dann wurde diese nicht in der Spaltenbezeichnung angewendet, sofern für die Spaltenbezeichnung keine eigene Ausrichtung definiert wurde. Das gleiche gilt auch für die Ausrichtung von Spaltenfüßen.

  • bDSSelection und ADS
    Der ADS arbeitet in der Funktion Str() immer mit dem '.' als Dezimalseparator. Dies ist unabhängig davon, welche Einstellung mit der Funktion SetDecimalSep() in VO definiert wird. Aus diesem Grund wird nun vor dem Auswerten der Selektion (siehe Methode bDSSelection:Update()) der Dezimal-Separator auf das Zeichen '.' gesetzt und anschließend wieder restauriert.
1.5.16
  • bBrowser:PropertyPut(#ScrollThumbDragRefresh)
    Der Wert für die Property #ScrollThumbDragRefresh wurde falsch ausgewertet. Bei FALSE wurde die Anzeigen beim Scrollen mit dem Slider ständig aktualisiert und bei TRUE nur beim Beenden des Scrollvorgangs. Die Bedeutung der Werte ist aber wie folgt definiert. Bei TRUE wird die Anzeige ständig aktualisiert und bei FALSE nur beim Beenden des Scrollvorgangs. Die Werte werden nun korrekt ausgewertet.

  • bBrowser und ADS eigenes DBF-Format ADT
    Der bBrowser hatte mit dem ADS eigenen DBF-Format ADT Probleme, wenn Datensätze gelöscht wurden.

  • bDataColumn:SetContextMenu()
    Wenn mit der Methode bDataColumn:SetContextMenu() ein oder mehrere Kontextmenüs gesetzt wurden, dann wurden diese beim Zerstören der bDataColumn nicht zerstört.

  • bCompoundValue und schräger Text
    Schräger Text (Font:Rotation > 0) wurde von der Klasse bCompoundValue nicht korrekt dargestellt.

  • bComboEdit
    Wenn der Auswahldialog geöffnet wird, versucht das bComboEdit diesen unterhalb des Controls zu positionieren. Ist der Bereich unterhalb des Controls zu klein, dann wird der Auswahldialog oberhalb des Controls positioniert. Der verwendete Algorithmus berücksichtigte bisher nicht die Taskbar von Windows.

  • bDBServer:SuspendNotification()
    Laut Dokumentation gibt der Aufruf der Methode bDBServer:SuspendNotification() einen numerischen Wert zurück. Statt dessen wurde aber das Server Objekt zurückgeben. Der Rückgabewert der Methode wurde nun so angepasst, wie er in der Dokumentation beschrieben ist. Das gleiche gilt auch für die Methode bDBServer:ResetNotification().

  • bArrayServer:SetSelectiveRelation()
    Wenn im relationierten Server keine Datensätze zur Relation existierten, dann wurde unter Umständen auf den letzten Datensatz im Server positioniert.
1.5.15
  • bBrowser und VO 2.7b
    Behebt verschiedene Probleme mit VO 2.7b.
1.5.14
  • bBrowser:SetContextMenu()
    Wenn mit der Methode bBrowser:SetContextMenu() ein oder mehrere Kontextmenüs gesetzt wurden, dann wurden diese beim Zerstören des bBrowser nicht zerstört. Dies verursachte ein Speicherloch
    .
1.5.13
  • bBrowser:AutoRefreshTime
    Durch ein vorheriges Patch wurde die AutoRefresh-Funktionalität (bBrowser:AutoRefreshTime) nicht mehr unterstützt. Dieses Problem wurde nun behoben, so dass die AutoRefresh-Funktionalität wieder unterstützt wird.

  • bBrowser und NULL-Werte im Spaltenfuß
    Wenn einem Spaltenfuß (bDataColumn:Footer) ein Null-Wert (0, FALSE, NULL_DATE, ...) zugewiesen wurde, dann wurde dieser Wert nicht angezeigt.
1.5.12
  • bBrowser und Hintergrundfarben für Spaltenbezeichnungen und Spaltenfüße
    Bisher wurde der Bereich für die Spaltenbezeichnung bzw. für den Spaltenfuß in der Farbe Grau gezeichnet, wenn dieser nicht sichtbar war (siehe bDataColumn:CaptionVisible bzw. bDataColumn:FooterVisible). Nun wird die Hintergrundfarbe verwendet, die im bViewStyle für die Spaltenbezeichnung bzw. den Spaltenfuß definiert ist. Wenn keine Hintergrundfarbe definiert ist, dann wird der Bereich in der Farbe Grau gezeichnet.

  • bBrowser:SelectionSet()
    Wenn die Methode bBrowser:SelectionSet() wie nachfolgend aufgerufen wurde, dann wurde der bBrowser nicht neu gezeichnet.

    oBrowser:SelectionSet(#All)

    Dieses Problem ist nun behoben.

  • bBrowser und SQLSelect
    Die Klasse SQLSelect ermittelt nicht immer den korrekten EoF-Status, wenn nur ein Datensatz vorhanden ist. Dieses Problem wurde durch einen Workaround im bBrowser korrigiert.

  • bArrayServer:RecordPut()
    Beim Aufruf der Methode bArrayServer:RecordPut() wurde bisher eine vorhandene Sortierung nicht aktualisiert. Dieses Problem wurde nun behoben. Wenn eine vorhandene Sortierung nicht aktualisiert werden soll, dann kann im neuen Argument <lUpdateOrder> der Wert FALSE übergeben werden. Als Vorgabe wird der Wert TRUE verwendet.
1.5.11
  • bBrowser und Scrollbalken
    In Windows 2000 und Windows XP können für die Scrollbalken Kontextmenüs eingeblendet werden. Bisher wurden in diesen Kontextmenüs die Menüpunkte "Oberer Rand" bzw. "Unterer Rand" nicht unterstützt. Dieser Fehler ist nun behoben.

  • bIcon
    In VO 2.7a konnte es vorkommen, dass die Icons nicht angezeigt wurden oder plötzlich verschwanden.
1.5.10
  • bBrowser:IsCaptionClickable()
    bBrowser:IsColumnMovable()
    bBrowser:IsColumnResizable()
    bBrowser:IsRowResizable()
    Bisher hat der bBrowser die Methoden nicht intern verwendet, sondern hat direkt auf die entsprechenden Instanz-Variablen zugegriffen. Die Methoden dienten nur dazu, von Außen die Zustände ermitteln zu können. Nun verwendet der bBrowser die Methoden auch intern. Somit ist es möglich, den bBrowser abzuleiten und die Methoden zu überlagern, um das Verhalten des bBrowsers zu verändern.

  • bBrowser:Font()
    Wenn mit der Methode bBrowser:Font() der Font geändert wurde, dann wurde nicht die Höhe der Spaltenbezeichnungen neu berechnet.

  • bArrayServer und DataFormat BDATAFORMAT_DBASE
    Beim Instanzieren des bArrayServer kann im Argument <auData> ein Daten-Array übergeben werden. Das Daten-Array enthält die Daten zu den definierten Feldern. Wenn bei einem Feld vom Datentyp String die Datenlänge in dem Array größer ist als die definierte Feldlänge, dann wird nun die Datenlänge auf die Feldlänge gekürzt.
1.5.9
  • bBrowser:GridInEmptyArea und Farbbedingungen
    Durch das Patch bBrowser 1.5.8 hat sich der folgende Fehler eingeschlichen:
    Wenn bBrowser:GridInEmptyArea auf TRUE gesetzt wurde und zusätzlich im bBrowser eine Farbbedingung definiert wurde, konnte es beim horizontalen Scrollen zu einem Absturz kommen.
1.5.8
  • bBrowser, SplitWindow und TAB-Taste
    Im bBrowser wird nun auch die TAB-Taste unterstützt, wenn sich dieser in einem SplitWindow befindet.

  • Variable Zeilenhöhe und Font-Bedingungen
    Font-Bedingungen (bFontCondition) im bBrowser oder bDataColumn wurden nicht berücksichtigt, wenn die variable Zeilenhöhe (bBrowser:EnableRowHeightVariable()) eingeschaltet war.
1.5.7
  • bBrowser:Refresh()
    Nach dem Aufruf von bBrowser:Refresh() konnte es vorkommen, dass einige Datensätze doppelt angezeigt wurden.

  • bBrowser und Mausklick
    Ein Mausklick in einen leeren Browser konnte unter bestimmten Umständen einen Absturz verursachen. Dieser Fehler ist nun behoben.

  • bBrowser:ResizeBuffer()
    Unter bestimmten Umständen stürzte der bBrowser sporadisch in der Methode bBrowser:ResizeBuffer() ab. Dieser Fehler ist nun behoben.

  • bBrowser und variable Zeilenhöhe
    Wenn für eine Datenspalte mit dem ValType "C" die variable Zeilenhöhe (bDataColumn:HeightVariable) aktiviert wurde, dann wurde zwar die korrekte Höhe berechnet, der Zellwert wurde aber nicht auf die berechnete Höhe umgebrochen.

  • bDataColumn und numerische Werte
    Numerische Werte werden in einer Datenspalte immer als String angezeigt. Um einen numerischen Wert in einen String zu konvertieren, wird die Methode bDataColumn:FieldSpec:Transform() aufgerufen. Dieser Aufruf erzeugt allerdings einen String mit führenden Blanks. Wenn solch ein Wert dann linksbündig angezeigt werden soll, sind die führenden Blanks sehr störrend. Aus diesem Grund werden nun bei der Konvertierung von numerischen Werten alle führenden Blanks entfernt.

  • bIcon:Size
    Die strenge Typisierung wurde entfernt.

  • bCompoundValue:GetValue()
    Wenn für das Argument <iValue> der Wert 1 übergeben wurde, dann wurde nicht der erste Wert sondern ein NULL_OBJECT zurückgegeben.

  • bCompoundValue:DeleteValue()
    Wenn für das Argument <iValue> der Wert 1 übergeben wurde, dann wurde nicht der erste Wert gelöscht.

1.5.6
  • bDataColumn:FieldMode
    Der neue Zugriff gibt den FieldMode zurück, der in der Methode bDataColumn:Init() im Argument <symFieldMode> spezifiziert wurde.

  • bBrowser und unterschiedliche Mauszeiger
    Mit der Methode bBrowser:PropertyPut() können unterschiedliche Mauszeiger für die folgenden Bereiche im bBrowser definiert werden:
    - Daten
    - Spaltenfuß
    - Selector

    Um einen Mauszeiger für einen Bereich zu definieren, müssen die folgenden Konstanten verwendet werden:
    - #DataPointer
    - #FooterPointer
    - #SelectorPointer

    Das folgende Codefragment definiert für den Datenbereich einen Mauszeiger:
      oBrowser:PropertyPut(#DataPointer,
                          Pointer{POINTERCROSSHAIRS})


  • bBrowser:RecordRelease()
    Mit der neuen Methode bBrowser:RecordRelease() kann ein Datensatz freigegeben werden, der vorher mit bBrowser:RecordSave() gesichert wurde.

  • bBrowser:ServerType
    Der neue Zugriff bBrowser:ServerType definiert den Typ des Datenserver, der mit dem bBrowser verknüpft ist. Abhängig vom Typ optimiert der bBrowser die Zugriffe auf den Datenserver.

  • bBrowser:InitRecordScope()
    Die neue Methode bBrowser:InitRecordScope() ermittelt die Satznummer des ersten, des letzten und des EoF-Datensatzes.

  • bBrowser:RowCountMode
    Der Zugriff unterstützt nun auch den neuen Modus #LastRec.

  • bBrowser und AutoRefresh
    Das AutoRefresh-Verhalten wird nun auch für SQL basierte Datenserver unterstützt. In der Methode bBrowser:AutoRefresh() wird für SQL basierte Datenserver eine Methode aufgerufen, mit der die Daten erneut vom SQLServer geholt werden. Der Name dieser Methode kann mit der Property #SQLRequeryMethod im bBrowser definiert werden. In der Methode bBrowser:Use() wird die Property automatisch gesetzt, sofern diese noch nicht definiert ist:
    - Wenn der Server eine Instanz der Klasse SQLSelect ist:
      #Execute
    - Wenn der Server eine Instanz der Klasse ADORecordSet, ADOServer ist:
      #Requery

  • bArrayServer:OrderInfo()
    Die Methode unterstützt nun auch die folgenden Konstanten:
    - DBOI_KEYSINCLUDED
    - DBOI_SETCODEBLOCK

    Für die folgenden Konstanten, werden definierte Nullwerte zurückgegeben:
    - DBOI_CUSTOM (False)
    - DBOI_FILEHANDLE (NULL_PTR)
    - DBOI_FULLPATH (NULL_STRING)
    - DBOI_HPLOCKING (False)
    - DBOI_INDEXEXT (NULL_STRING)
    - DBOI_INDEXNAME (NULL_STRING)
    - DBOI_LOCKOFFSET (0)
    - DBOI_UNIQUE (False)

  • bDBServer:SetSelectiveRelation()
    Die Unterstützung der selektiven Relation enthielt einen Fehler, wenn die kontrollierende Sortierung absteigend (descend) war.

  • bDBServer und RecordFilter
    Im Record-Filter wurden die gelöschten Datensätze nicht ignoriert, wenn SetDeleted() die Einstellung TRUE hatte.
1.5.5
  • bBrowser und Infotexte
    Wenn der bBrowser vergrößert wurde, dann wurde nicht immer die Größe des sichtbaren Infotextes angepasst.
  • bBrowser:CurrentColumn
    Wenn mit bBrowser:CurrentColumn die aktuelle Spalte gesetzt wird, wird nun auch bei der Einstellung bBrowser:AutoEdit #Permanent die Zelleingabe gestartet.
  • bBrowser:AutoEdit #Excel
    Bei der Einstellung bBrowser:AutoEdit #Excel wird nun auch beim Drücken der RETURN-Taste die Callback-Methode CellDoubleClick() aufgerufen. Dieses Verhalten wurde bei den anderen Einstellungen für bBrowser:AutoEdit bereits unterstützt.
  • bBrowser:AutoEdit #Permanent
    Bei der Einstellung bBrowser:AutoEdit #Permanent wird nun auch die Möglichkeit unterstützt, innerhalb der Callback-Methode CellEdit() die Eingabe abzubrechen und den Tabellen-Cursor auf eine andere Zelle zu bewegen.
  • bBrowser und Eingabe
    Wenn innerhalb der Callback-Methode CellEdit() Fehlermeldungen angezeigt wurden, konnte es passieren, dass die Fehlermeldung mehrmals hintereinander angezeigt wurde.
  • bBrowser und Mehrfachselektion
    Wenn mehrere Datensätze in einem Block markiert waren und dazwischen waren gelöschte Datensätze, die aufgrund der Einstellung von SetDeleted() nicht sichtbar waren, dann wurden mit den Methoden bBrowser:SelectionFirstRow() und bBrowser:SelectionNextRow() nicht die korrekten Datensätze zurückgegeben.
  • bBrowser:SelectionCellCount
    bBrowser:SelectionCellCount gab nicht immer die korrekte Anzahl selektierter Zellen zurück.
  • bBrowser:SelectionRowCount
    bBrowser:SelectionRowCount gab nicht immer die korrekte Anzahl selektierter Zeilen zurück.
  • bBrowser und Drag&Drop
    Wenn ein bBrowser sowohl Drag&Drop-Client als auch Drag&Drop-Server war, wurde automatisch der Drag&Drop-Modus aktiviert, wenn mit der Maus eine Spalte verschoben oder deren Breite verändert wurde.
  • bBrowser:SkipToCell()
    Die Methode unterstützt das neue Argument <lAutoEdit>. Das Argument definiert, ob bei der Einstellung bBrowser:AutoEdit #Permanent automatisch eine Zelleingabe geöffnet werden soll. Wenn das Argument nicht spezifiziert wird, dann wird der Wert TRUE als Vorgabe verwendet.
1.5.4
  • bBrowser und ClipperKeys
    Der bBrowser unterstützt nun auch die Return-Taste korrekt, wenn in seinem Owner die ClipperKeys eingeschaltet sind. Bisher wurde das Drücken der Return-Taste bei eingeschalteten ClipperKeys ignoriert.
  • bBrowser und Mehrfackselektion
    Der bBrowser verarbeitete die Mehrfachselektion nicht korrekt, wenn zwei unterschiedlich lange Blöcke direkt neben einander lagen.
  • bBrowser:AutoWidthColumn
    Die Breite der bBrowser:AutoWidthColumn wurde nicht korrekt berechnet, wenn diese vor dem Aufruf der Methode bBrowser:Use() gesetzt wurde.
  • bCompoundValue
    Die Position eines untergeordneten bCompoundValue wurde nicht relativ zum übergeordneten bCompoundValue dargestellt.
  • bArrayServer und Scopes
    Unter bestimmten Umständen gab es im bArrayServer Probleme mit Scopes. Dies führte dazu, dass die Ergebnismenge des aktivierten Scopes nicht korrekt war.
1.5.3
  • bBrowser:CurrentRow
    Der Zugriff bBrowser:CurrentRow gab unter bestimmten Umständen keine korrekten Werte zurück.
  • bBrowser:ToolTipMode
    Beim bBrowser:ToolTipMode #Column wurde kein ToolTip angezeigt, wenn der Mauszeiger von den Spaltendaten in die Spaltenbezeichnung bewegt wurde.
  • bDataColumn:ToolTipText
    Mit dem neuen Zugriff bDataColumn:ToolTipText kann ein Tooltip für eine Datenspalte definiert werden.
    Wenn kein ToolTipText definiert ist, wird
    1. überprüft, ob ein HyperLabel in der Datenspalte gesetzt ist. Wenn ja, wird die Description aus dem HyperLabel verwendet.
    2. überprüft, ob eine FieldSpec mit HyperLabel in der Datenspalte gesetzt ist. Wenn ja, wird die Description aus dem HyperLabel verwendet.
    3. überprüft, ob die Datenspalte mit einem Feld in einem Datenserver verknüpft ist. Wenn ja, wird die Description aus DataServer:FieldHyperLabel() verwendet.
  • bBrowser:AutoRefresh
    Wenn für bBrowser:AutoRefreshTime ein Wert >0 gesetzt war und mit dem Scrollbalken die Daten im bBrowser gescrollt wurden, dann sprang der bBrowser nach Ablauf der bBrowser:AutoRefreshTime auf den aktuellen Datensatz zurück, sobald durch ein anderes Programm in der gleichen Datenbank ein Datensatz angehängt bzw. gelöscht wurde. Dieses Verhalten ist nun behoben. Der bBrowser springt nicht mehr auf den aktuellen Datensatz, sondern behält die sichtbaren Datensätze weiterhin in seiner Sicht.
  • bBrowser:GetColumnEditMode()
    Wenn die Reihenfolge der geöffneten Datenspalten (bBrowser:ColumnOpenList) nicht der Reihenfolge der unterstützten Datenspalten (bBrowser:ColumnList) entsprach, dann gab die Methode bBrowser:GetColumnEditMode() einen falschen EditMode zurück.
  • bBrowser und Mehrfachselektion
    Die Mehrfachselektion arbeitete nicht korrekt, wenn der Server durch eine Relation mit einem anderen Server verbunden war.
  • bBrowser und ADS eigenes DBF-Format ADT
    Der bBrowser hatte mit dem ADS eigenen DBF-Format ADT Probleme, wenn die DBF-Datei gelöschte Datensätze enthielt.
  • bArrayServer:OrderKeyCount()
    Wenn für eine Order ein Scope gesetzt war, gab die Methode bArrayServer:OrderKeyCount() einen falschen Wert zurück.
  • bArrayServer und Scopes
    Wenn im bArrayServer ein Scope gesetzt wurde, zu dem es keine Ergebnismenge gab, dann wurde im bBrowser trotzdem ein Datensatz angezeigt.
1.5.1
  • bBrowser und Eingabe
    Wenn Aufgrund einer Eingabe-Validierung eine Standard-Fehlermeldung vom bBrowser angezeigt wurde, dann war der Fenstertitel der Fehlermeldung in Deutsch. Dies betraff nur den bBrowser in der international Version.
  • bBrowser und vertikale Spaltenwerte
    Wenn für die Spaltenwerte ein Font mit einer Rotation (siehe bFont:Rotation) definiert wurde, dann wurden die Spaltenwerte nicht korrekt angezeigt.
  • bbBrowser:GoTo()
    bbBrowser:GoTop()
    bBrowser:GoBottom()
    Vor einer Datensatzbewegung hat der DataServer kein NotifyIntentToMove an die registrierten Clients gesendet.
Copyright © 2003-2015 BEFO GmbH