|
bBrowser
1.5 Patch 1.5.18.1 |
|
|
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.
|
|
|
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.
|
|
|
|
|