Skip to content

Bugs Fixed in DataFlex 18.0

Runtime

Text in a Form/dbForm's prompt button does not size properly when the form's FontPointHeight is changed

Bug 6696, reported by Matthias Burkhardt
The prompt button inside a Form/dbForm should adjust its width based on the button text (Prompt_Button_Value) using the form's font. The width calculation was not using a form's custom font, so increasing FontPointHeight could clip the text.

Example where the button text "Hello" appears clipped:

Object oForm is a Form
    Set Size to 13 126
    Set Location to 13 63
    Set FontPointHeight to 18
    Set Prompt_Button_Value to "Hello"
    Set Prompt_Button_Mode to PB_PromptOn
End_Object

Blank datetime may be displayed when Short Regional Date Mask is set to dd-MMM-yyyy

Bug 6679, reported by Quality Assurance
When the regional short date mask uses MMM and a datetime value contains a month name, the datetime control may display blank even though the value is stored correctly in datetime and string variables.

Reproduction example: dDateT contains a valid datetime (with year 1852) but sd2 shows blank.

Object oForm1 is a Form
    Set Size to 13 100
    Set Location to 22 90
    Set Form_Datatype 0 to Mask_Datetime_Window

    Procedure add_focus Handle hoParent Returns Integer
        DateTime dDateT dd2
        String sD sD2
        Move (CurrentDateTime()) to dDateT
        Move (DateSetYear(dDateT,1852)) to dDateT
        Move (DateSetDay(dDateT,9)) to dDateT
        Move (CurrentDateTime()) to sD
        Move dDateT to sD2
        Move sD2 to dd2
        // this sets value to a datetime with an 1852 year.
        Set Value 0 to dDateT
        Forward Send add_focus hoParent
        Get Masked_Value to sd2
    End_Procedure
End_Object

Wrong year may be stored in string variable when Short Regional Date Mask is set to yy

Bug 6678, reported by Quality Assurance
If the short regional date mask uses two-digit years (yy), converting a datetime to string and back can misinterpret the year. For example, a datetime set to year 1852 can end up as 1952 after conversion.

Reproduction example:

Procedure Test1
    DateTime dt1 dt2
    String st1
    Integer iYr
    Move (CurrentDateTime()) to dt1
    Move (DateSetYear(dt1,1852)) to dt1 // datetime should now be 1852
    Move dt1 to st1
    Move st1 to dt2 // convert string back to datetime
    Move (DateGetYear(dt2)) to iYr // get the year
    If (iYr<>1852) Begin
        Showln "ERROR: Bad year"
    End
End_Procedure

Database Explorer

File association assignment for .DAT and .INT files did not always work

Bug 6668, reported by Quality Assurance
The file association assignment for .DAT and .INT files did not always take effect. The tab-page was redesigned; current file association information is now shown in a read-only popup dialog. You cannot change the display text of the association anymore.


Export wizard allows status panel checkboxes to check in the wrong group

Bug 6660, reported by Phil Kirby
On the Export Data wizard panel "Choose program/output names", the checkbox to "Use a Statuspanel" should only be selectable if the corresponding output option is selected. Currently the status panel checkbox in the "Output to printer" group is selectable even when "Output to file" is selected.


It is not possible to create a filter with a value identical to a column name

Bug 6609, reported by Th. Forstmeier
When a filter value equals a column name, the filter used the column value instead of the constant string. For example, comparing customer name against the literal "ZIP" used the ZIP column value. Fixed by adding a checkbox to indicate whether the typed value is a column name.

Installation

Installations do not include SQLBase.int new in the Connectivity Kit 6

Bug 6625, reported by Quality Assurance
Installations (Studio, Server and Client) did not properly include the SQLBase.int file from Connectivity Kit 6.0. The SQLBase.int file should be placed in the bin folder.


Installation and Environment Guide does not instruct Users to restart their machines after uninstalling older build

Bug 6166, reported by Quality Assurance
The guide should recommend rebooting the machine between uninstalling one Visual DataFlex build and installing another to avoid DLL-in-memory issues.

Suggested addition to Installation Procedure:

  • Backup all data, your DataFlex applications and registry entries from any existing Visual DataFlex or WebApp installation.
  • Reboot your computer to release all DLLs which might be in memory. After uninstalling any revision of Visual DataFlex, restart your machine prior to installing another build or revision.
  • Remove all instances of Beta or Pre-release versions of Visual DataFlex 2010 prior to installing this release. Use Add/Remove Programs and choose Automatic Uninstall to remove all installed files. User-generated directories remain intact.
  • Reboot your computer to release all DLLs which might be in memory.
  • Make sure you are running a supported operating system and run the appropriate installation program as listed.

Electos information is part of installation documentation but is no longer installed

Bug 6162, reported by Quality Assurance
Electos is no longer automatically installed with Visual DataFlex, but installation screens and guides still reference Electos. Outdated references (such as automatic installation text for Electos) were removed from the installation materials.

Packages

If a Form/dbForm's Prompt_Button_Mode is PB_PromptOn, Prompt_Button_Value must be set before Prompt_Button_Mode

Bug 6695, reported by Matthias Burkhardt
Setting Prompt_Button_Mode to PB_PromptOn before Prompt_Button_Value results in the prompt button showing "..." instead of the specified text. The order must be:

Object oForm is a Form
    Entry_Item WAESCHEK.GRUPPE
    Set Size to 13 100
    Set Location to 10 10
    Set Prompt_Button_Value to "hello"
    Set Prompt_Button_Mode to PB_PromptOn
End_Object

Refreshing a cCJGrid/cDbCJGrid during a mouse grid activation may result in an error

Bug 6688, reported by Peter Bragg
If a cCJGrid or cDbCJGrid is activated via mouse and is refreshed during the focus change, the clicked row may no longer exist and an error occurs. Example reproduction described using the Order Entry sample (switching orders with different number of items and clicking an out-of-range row).


Invalid index error when trying to sort a cWebPromptList by a parent table column

Bug 6687, reported by Anders Ohrt
In a cWebPromptList with sortable columns, sorting by columns from a related table attempted to use an index that doesn't exist in the main table, causing an "invalid index" error. Reproducible with an attached workspace.


HelpTopic meta data tags missing from new Web Framework classes

Bug 6670, reported by Quality Assurance
Pressing F1 on web framework class declarations (for example Object oCustomerName is a cWebForm) took the user to the cObject page or blank page because the web framework classes lacked HelpTopic meta data tags. Example missing tag:

{ HelpTopic=cWebForm }

cDbCJGridColumn.pkg has dependency to DFTable.pkg

Bug 6650, reported by Vincent Oorsprong
cDbCJGridColumn.pkg relied on a struct tGridComboHelper from DFTable.pkg. The struct was moved to its own file so both packages can use it without the dependency.


Entry_Client_mixin uses define_Auto_Locate twice

Bug 6642, reported by Quality Assurance
In construct_object of Entry_Client_mixin, define_Auto_Locate was sent twice. The method is empty, so sending it twice had no effect; the redundant call was removed.


Tooltip for qualifiedItem is wrong

Bug 6641, reported by Quality Assurance
The codesense tooltip for the qualifiedItem method (in FleXML.pkg) displayed parameters in reversed order. Tooltip information corrected.


Using dfabout with DFBTRDRV loaded generates an error

Bug 6624, reported by Matthias Burkhardt
Opening the About screen while the Pervasive.SQL Connectivity Kit (DFBTRDRV) is loaded generated "Invalid driver function call 10005". This was corrected.


pbBypassDDFieldBuffer in a changed edit class moves caret when leaving the control

Bug 6607, reported by Pieter van Dieren
When pbBypassDDFieldBuffer of a cDbTextEdit is set to False, the caret was moved to the beginning when the control regained focus if the control was in a changed state. Reproducible in Order Entry (changing Comments, switching away and back). Fixed so caret position is preserved.


Add DD_NOENTER support toggle to the cDbTextEdit class

Bug 6589, reported by Quality Assurance
The data-aware cTextEdit and cRichEdit controls did not fully respect No_put, DD_NoEnter, and DD_Commit conditions. Fixes include:

  • Extended field buffer respects no_put.
  • Controls now respect and apply DD_NoEnter and DD_Commit.
  • Added property pbNoEnterReadOnly to decide if a no-enter control should be readonly (default) or disabled.
  • Added ReadOnlyColor property to determine background color for readonly controls (clNone means no color applied).

Mark Private.Validation_Types and Private.Code_Description_Value as private in meta data

Bug 6576, reported by Quality Assurance
Set private. was being auto-completed to Set Private.Validation_Types, exposing a non-public property. Private methods and properties (including Private.Code_Description_Value) are now properly marked private. All methods within a private class are now considered private and are hidden from CodeSense.


Incorrect text alignment between a Label and the text in a dbForm

Bug 6563, reported by Raveen Ryan Sundram
Vertical alignment between a Form/dbForm label and its text, and between TextBox and Form controls, was inconsistent, more noticeable with certain fonts (e.g., Segoe UI) and DPIs. Multiple issues were addressed. Note: vertical alignment between labels and text in combos remains imperfect due to Windows combo control behavior.


Bug in code order in PointSizeToPhysicalFontSize invalidates the font that's currently selected

Bug 6519, reported by Frank Cheng
In GlobalFunctionsProcedures.pkg, the order of ReleaseDC and DeleteObject caused invalidation of the font currently selected into the desktop DC and leaked fonts. The ReleaseDC line was moved to be after DeleteObject.

Relevant snippet (correct final ordering):

Move (DeleteObject(hFont)) to bVoid
Move (ReleaseDC(0, hDC)) to hDC
Move (SelectObject(hDC, holdFont)) to hOldFont
Function_Return iFontSize
End_Function

Add meta data tag to remove Transparent_State in checkbox property window

Bug 6513, reported by Quality Assurance
Checkboxes do not support Transparent_State, but the property pane allowed setting it. For FORM, Windows.pkg contained:

{ OverrideProperty=Transparent_State DesignTime=False }

The same override was added for the checkbox class to hide the unsupported property.


Lowercase in DD_OperationChecker at the wrong location

Bug 6494, reported by Thomas Murphy
Line 61 of DD_OperationChecker.pkg used Lowercase() on a constant instead of on the message name. Changed from:

If (OPERATION_MODE=MODE_VALIDATING and sMessage<>Lowercase("request_save")) Begin

to:

If (OPERATION_MODE=MODE_VALIDATING and Lowercase(sMessage)<>"request_save") Begin

ListRowCount does not work for dbComboForm class

Bug 6470, reported by Flavio da Costa Figueiredo
ListRowCount was not limiting the number of rows shown by dbComboForm on XP and above due to changes in behavior. A different internal interface is now used; ListRowCount works again. Test by setting ListRowCount to 4 on oCustomer_State in Customer.vw.


LoadData in cdbcjgridpromptlist queries but does not use phoInvokingObject

Bug 6464, reported by Quality Assurance
The method queried phoInvokingObject but did not use the returned value; this has been corrected.

Help

Language Reference: DF_API_DISABLED missing

Bug 6164, reported by Quality Assurance
The DF_API_DISABLED attribute was not documented. This attribute is set to true to avoid re-entrance and is set before the first callback message from an API command (e.g., SORT) and set to false at the end. Example illustrating use:

Boolean bDisabled
Open Customer
Get_Attribute DF_API_DISABLED to bDisabled //<-- false
Sort Customer.File_Number "1 2 3" (DF_SORT_OPTION_BAD_DATA_FIXUP ior DF_SORT_OPTION_DUP_DATA_ABORT) (oSimpleProcess)
Get_Attribute DF_API_DISABLED to bDisabled //<-- false again

Object oSimpleProcess is a cObject
    Function CallBack String sMessage Integer iType Returns Integer
        String sType
        Boolean bDisabled

        Get_Attribute DF_API_DISABLED to bDisabled

        Case Begin
            Case (iType = DF_MESSAGE_TEXT)
                Move "(Text)" to sType
            Case Break
            Case (iType = DF_MESSAGE_HEADING_1)
                Move "(Message Heading 1)" to sType
            Case Break
            Case (iType = DF_MESSAGE_HEADING_2)
                Move "(Message Heading 2)" to sType
            Case Break
            Case (iType = DF_MESSAGE_HEADING_3)
                Move "(Message Heading 3)" to sType
            Case Break
            Case (iType = DF_MESSAGE_HEADING_4)
                Move "(Message Heading 4)" to sType
            Case Break
            Case (iType = DF_MESSAGE_HEADING_5)
                Move "(Message Heading 5)" to sType
            Case Break
            Case (iType = DF_MESSAGE_WARNING)
                Move "(Warning)" to sType
            Case Break
            Case (iType = DF_MESSAGE_PROGRESS_TITLE)
                Move "(Progress Title)" to sType
            Case Break
            Case (iType = DF_MESSAGE_PROGRESS_VALUE)
                Move "(Progress value)" to sType
            Case Break
        Case End

        Showln sMessage " -- " sType
    End_Function
End_Object

The attribute returns true during callback handling.

Studio Wizards

Add 'be' to the text of the 'Reporting Order and Breakpoints' page of the WinPrint report wizard

Bug 6703, reported by Mihalis Kapiris
Changed "Select the index to used in this report." to "Select the index to be used in this report."


Add the word 'to' in the explanation for the names page in Web & Win lookup wizards

Bug 6698, reported by Mihalis Kapiris
Added "to" in the line: "The object name and component name will be added to your data-dictionary class. This information is used to access the lookup list within an application."

Compiler

Access Violation may be raised at runtime if the name of the last defined message has an error

Bug 6605, reported by Wil van Antwerpen
If the last new message defined by the application has an error and its message number is a multiple of 32, the compiler did not store its name properly in the compiled executable. When the runtime attempted to access that message name (e.g., via the error handler), an Access Violation could occur. This long-standing, rare bug was fixed.

Error Maintenance

Browsing through the grid often prompts to save changes when none were made

Bug 6652, reported by Quality Assurance
While browsing the error grid, users were often prompted to save changes even though they hadn't made any. The error grid uses a computed error number based on record number and offset. The old dbGrid was replaced with the newer cDbCJGrid class to fix the issue.

Studio

Invalid CDS Node when deleting relationship

Bug 6717, reported by Quality Assurance
Deleting a relationship in Table Editor and then saving could raise an "Invalid CDS Node" error. Reproduction steps (Order Entry):

  1. Open the OrderDtl Data Dictionary. Go to the Structures tab.
  2. In Required Parent Tables, select the "Nulls" checkbox for Invt. Save.
  3. Open OrderDtl in Table Explorer and delete the relationship to Invt.
  4. Save — two "Invalid node handle" errors appear.

This was fixed.


'File is Read Only' dialog cuts off long file names

Bug 6680, reported by Quality Assurance
The dialog displayed when attempting to save edits in a read-only file truncated long file names. The dialog layout was corrected.


Images in the Studio's Statusbar do not scale properly at higher DPIs

Bug 6664, reported by Quality Assurance
Statusbar images scaled poorly at DPIs like 125% (they attempted to scale and looked ragged). The scaling behavior was corrected so images appear properly at higher DPIs.


Error displayed when pressing F7 for external file open in the Studio

Bug 6646, reported by Quality Assurance
Switching a file from another workspace to Design mode (F7) produced a COM error:

COM object method invocation error. The specified file ... is not available in the meta database

This error message and its handling were fixed.


Add Validation Object dialog can be resized too small

Bug 6643, reported by Quality Assurance
The piMinSize of the Add Validation Object dialog was too small allowing the right-hand list to shrink and overlap labels. Minimum size was increased.


Long Label with double quotes triggers a Studio modeling error

Bug 6630, reported by Allan Kim Eriksen
If a column Long Label contains double quotes (e.g., Invt Item "ID"), dragging the column to a view could trigger a modeling error. This was corrected.


Client Web services with schemas may fail if xmlns:prefix attributes differ between schemas

Bug 6622, reported by Allan Kim Eriksen
The web-service class generator incorrectly handled cases where an imported-from schema and an imported-to schema used the same namespace prefix with different URIs. This caused parsing errors; generation might succeed but runtime would fail. The generator was corrected.


Error 4399 when right-clicking on the tab for a view not in the current workspace

Bug 6599, reported by Frank Valcarcel
Right-clicking a view tab that belongs to a different workspace produced a COM error:

COM object method invocation error. The specified file ... is not available in the meta database

This case is now handled gracefully.


Rebuild DD list does not work when no DDClassList.XML is present

Bug 6524, reported by Quality Assurance
Rebuilding the DD Class List did nothing when DDClassList.XML was absent. Now the rebuild creates a new DDClassList.XML if none is present. Note: you must close the workspace, delete the file, then reopen the workspace and rebuild.


Enlarge the table name control in the Table Editor

Bug 6501, reported by Richard Hogg
Increased the width of the Table Name control in the Table Editor to accommodate the increased column name length (from 8 to 31 characters).


The Remember Toolbar should have a psTitle

Bug 6458, reported by Quality Assurance
The Remember toolbar lacked a psTitle, so it appeared as "Toolbar" in floating menu on command bars. psTitle was added.


Change ClassList.XML to not add DFALLENT for a dbGroup

Bug 6391, reported by Quality Assurance
Dragging a dbGroup from the Class Palette added Use DFAllEnt.pkg to the component. dbGroup only requires dfClient.pkg, so DFALLENT is no longer added.


Pressing F7 after changing object name triggers unhandled exceptions

Bug 6229, reported by Joao Mauricio Rinardo
Changing an object name and pressing F7 could produce a series of 4399 errors ("Invalid CDS node handle"). Error handling around object renaming and view toggling was improved to prevent these exceptions.