Alpha 2
Build Notes for Alpha 2
The temporary page takes most (but not all) of the entries in the chronological Build Notes and sorts them by category. Only those items that changed between Alpha 1 and Alpha 2 are listed.
- Windows Framework
- Web Framework
- Web Services
- Studio
- Connectivity / CLI CKs (Embedded SQL)
- WebApp Check
- Flexerrs / Misc Fixes
- Help / Documentation
- See Also
Windows Framework
-
Labels now do a better job of vertically aligning themselves with Form and dbForm controls. This is particularly noticeable with non-standard form heights. The alignment logic change is applied only when the label and form use the same font, pointheight, fontsize and there is an additional row offset applied (
label_row_offset). If these settings were customized, previous behavior is preserved. -
Combos: alignment of combo controls is complicated because Windows determines combo form height and text placement. Text is not vertically centered by Windows, so perfect alignment with labels/textboxes is not guaranteed. You can influence label alignment by setting the combo's size height to different values (e.g.,
Set Size to 12 80) — the textbox aligns as if the combo were that height even if Windows does not actually change it. -
New property
pbApplyComboFormHeight: allows setting the actual height of a ComboForm's form. Default isFalse— use with caution. Windows handles combo internals oddly; text position does not change when height changes, so alignment may still be imperfect. If set toTrue, test across all display DPIs your application will run under. -
Combos no longer set the Size height to 100 in the end constructor. The size you set remains, even if Windows doesn't actually adjust the height. This is important because label logic now uses this to determine placement.
-
New external function
GetWindowtRectadded toWinUser.pkg. If you have this declared elsewhere, you can remove your declaration (a compiler error will point to the line). -
Fixed BT 6607:
pbBypassDDFieldBufferin a changed edit class moves caret when leaving the control. -
Added
cSplitButtonclass (requires Vista or above). Requiresvdvm18.0build 11. -
Added
cCommandLinkButtonclass (requires Vista or above). -
Added
dbSuggestionFormclass — Windows version ofcWebSuggestionForm. -
Changed
Buttonclass to support images via an imagelist, support text and images, drop downs and support for the Windows shield. -
Added
SetPopupLocationtocCJContextMenuproviding a way to specify a specific location for a context menu (used by button drop downs). -
Added explorer-style appearance support for
TreeViewclass (pbExplorerStyle). -
Added support to allow
viewanddbViewobjects to be invoked modally usingPopup_Modal. -
Updated components to CodeJock 16.3.0. The most notable difference is that the new controls fix toolbar image display problems at higher DPIs.
-
New command bar themes:
xtpThemeOffice2013 xtpThemeVisualStudio2012 xtpThemeVisualStudio2012Light xtpThemeVisualStudio2012Dark -
Report Control - new property
peReportTheme (ComVisualTheme)supports:The default isxtpReportThemeDefault xtpReportThemeOfficeXP xtpReportThemeOffice2003 xtpReportThemeOffice2003Luna xtpReportThemeOffice2013 xtpReportThemeVisualStudio2012Light xtpReportThemeVisualStudio2012Dark xtpReportThemeVisualStudio2012Blue xtpReportThemeExplorer xtpReportThemeResource xtpReportThemeNonextpReportThemeNone. When another theme is applied topeVisualTheme,peColumnStyleis not used.ComColumnStyleis deprecated per CodeJock; preferComVisualTheme. UsepeVisualThemeandpeColumnStyleas design-time properties only — changing them after the control has been paged creates a new PaintManager and resets existing settings. Prefer DataFlex messagespeVisualThemeandpeColumnStyleover the COM counterparts. -
Added ability to sort combo lists in
cCJGridColumnandcDbCJGridColumn: -
New property:
pbComboSort(defaultFalse). WhenTrue, the combo items for a column are sorted when the grid is activated. This changes the actual order of thetComboItemDataarray. If combo items are added after the grid has been displayed, they are appended to the end of the list and will not be sorted untilComboInitializeis sent. Update documentation forComboInitializeto note sorting behavior whenpbComboSortisTrue. -
Changes in
cRichEditandcTextEdit(runtime):
Property integer ReadOnlyColor
- Sets the background color when the edit object is read-only (
read_only_state = true). clNonemeans no change; any other color uses the specified color.clBtnFaceis a good choice.ReadOnlyColorcan be changed dynamically; ifread_only_stateistrueyou'll see the change immediately.-
Defaults:
cRichEditandcTextEdit:clNone(previous behavior).cDbRichEditandcDbTextEdit:clBtnFace(changes appearance whenRead_Only_StateisTrue).
-
Changes in
cDbTextEditandcDbRichEdit(respect DD flags and read-only behavior):
Previously these classes did not respect the DD's no-enter and no-put status. Now they do, and a new option allows you to specify whether a no-enter edit control should be disabled or set to read-only:
Property Boolean pbNoEnterReadOnly
- If
False, a DDNoEntersetting results in the control being disabled (cannot take focus). - If
True, the control is set to read-only (can take focus but cannot be changed, useful for copy operations on multi-line text). - Default is
True. -
ReadOnlyColordefault isclBtnFaceforcDbRichEdit/cDbTextEdit, giving a disabled appearance while allowing navigation and copy. -
Data Dictionaries:
- Merged change to make SQL-like strings work with DB2 while still working with MSSQL.
- Added symbol
SYSCONF_COMCTL_REVforSysConf(). - Packages now test
SYSCONF_COMCTL_REVto determine new feature support. When the revision is below 6.0 (i.e., no manifest), combos behave as they did before andpbApplyComboFormHeightis not used. This preserves pre-manifest behavior (not to encourage no-manifest apps, but to maintain compatibility). - Added information to
dd_debug.dgabout alias table DDs: the misc tab will now indicate if a DD is defined as an alias and the master table/DD (requires alias DD created using the new 17.0 logic). - Added
tWinButton_ImageListstruct totWinStructs.pkg, used byButtonclass for images. - Changed
tWebSuggestiontotSuggestionand moved totSuggestion.pkg(used bycWebSuggestionFormanddbSuggestionForm). -
Changed
cCJGridto ensureEnabled_stateredraws the grid (disabled grey appearance now applied dynamically with CodeJock 16.3 controls). -
cUIObject: - Added
CreateNamed. Works likeCreatebut accepts an extra parameter for the local name of the object:Get CreateNamed (RefClass(cImageList32)) "oImageList" to hoImage -
Createstill creates the object nameoObject.CreateNamedmakes objects easier to debug by giving them meaningful names (you still access dynamic objects by handle, not name). -
Added new class/package:
cTimer -
Interface:
pbEnabled— determines if the timer is enabled. DefaultFalse.piTimeOut— timeout interval in milliseconds. Default1000.OnTimer— called on each timeout.
-
Marked
DFTimeras obsolete. -
Changed
dbSuggestionFormto usecTimerinstead ofDFTimer. -
New Data Dictionary method
ErrorMessageTableNameand Flexml changes: pbReadyStateandLastParseErrornow appear incXMLDomDocument.-
Improved XML docs.
-
6397: Show the table name in "Can't save/delete file xx required" errors. When a DDO structure is incomplete,
Request_Save/Request_Deletenow display the table name and number, e.g.:
Can't Save. File 25 (Customer) required
Can't Delete. File 25 (Customer) required
This uses the new DD function Get ErrorMessageTableName (see 6511), which developers can augment.
- 6511: Extend DataDictionary
Extended_Error_Messagewith a function to supply table information:
Function ErrorMessageTableName Integer iTable Returns String
By default it returns the logical table name (df_file_logical_name). Developers may override to provide a different name.
Flexml and XML Changes
-
6546: Make
piReadyState,pbReadyStateandONREADYSTATECHANGEpublic. -
cXmlDomDocument'spbAsyncproperty now defaults toFalse. In many cases this will not impact applications because they either already set it toFalseor it now behaves as expected. -
New
cXmlDomDocumentfunctionLastParseError. -
Exposed
cXMLDocumentread-only propertypbReadyState.
pbAsync
pbAsync determines if loading an XML document (LoadXMLDocument) should be asynchronous.
-
If
pbAsyncisFalse,LoadXmlDocumentwaits until the document is fully loaded and parsed; the return value accurately reflects success:Get LoadXmlDocument of hoDoc to bOk If bOk Begin // you can now process your XML document End -
If
pbAsyncisTrue,LoadXmlDocumentreturns immediately withTrueeven if the file is not yet fully loaded. When loading asynchronously, you must verify both that the document has loaded/parsed (pbReadyState) and that it parsed successfully (LastParseError).
Example asynchronous usage (idle handler checks for completion):
Use Windows.pkg
Use Flexml.pkg
Object oXMLLoader is a cObject
Property Handle phoXMLDoc
Object oIdler is a cIdleHandler
// use idle events to test when loading is complete
Procedure OnIdle
Delegate Send OnIdle
End_Procedure
End_Object
Procedure StartXMLLoad
Handle hoDoc
Boolean bOk
Get Create (RefClass(cXMLDOMDocument)) to hoDoc
Set psDocumentName of hoDoc to "http://Some_URL_that_Loads_slow"
Set pbAsync of hoDoc to True // we are not waiting
Get LoadXMLDocument of hoDoc to bOk // loading may not be done yet
Set phoXMLDoc to hoDoc
Set pbEnabled of oIdler to True // start the idle handler
End_Procedure
// check if the document is done loading. If so, process it.
Procedure OnIdle
Boolean bReady
Integer iErr
Handle hoDoc
Get phoXMLDoc to hoDoc
// is it loaded and parsed.
Get pbReadyState of hoDoc to bReady
If (bReady) Begin
Set pbEnabled of oIdler to False
// did it parse successfully
Get LastParseError of hoDoc to iErr
If (iErr=0) Begin
Showln "document is loaded and ready"
// Send ProcessAndDisplayXMLDocument of oSomeObject hoDoc
End
Else Begin
Showln "document could not be loaded"
// Send ProcessAndDisplayXMLError of oSomeObject hoDoc
End
Send Destroy of hoDoc
Set phoXMLDoc to 0
End
Else Begin
Show "." // just to show we are waiting.
End
End_Procedure
End_Object
Object oMain is a BasicPanel
Set Label to "My Main Project"
Set Location to 10 10
Set Size to 100 100
Object oButton1 is a Button
Set Location to 10 10
Set Label to 'Button'
Procedure OnClick
End_Procedure
End_Object
End_Object
Send StartXMLLoad of oXMLLoader
Send Activate of oMain
Start_UI
Note: In most cases it's simpler to load synchronously; LoadXmlDocument's return value is sufficient.
pbReadyState
pbReadyState (read-only) returns True when an XML document has been loaded and parsed. It does not indicate whether parsing succeeded — check GetLastError (or LastParseError) after pbReadyState is True.
GetLastError / LastParseError
GetLastError / LastParseError returns the last parsing error encountered by a document load and parse. Use it after verifying pbReadyState to determine parse success.
pbResolveExternals
pbResolveExternals determines if an XML document should attempt to resolve external schema or DTD references (e.g., xsi:schemaLocation). Default is False. Automatic resolution can be problematic; prefer adding schemas manually with AddExternalSchemaFile or AddExternalSchemaDocument for better control and diagnostics.
Note: MSXML (and therefore Flexml) disables use of DTDs for validation for security reasons. This can make pbResolveExternals, AddExternalSchemaFile, and AddExternalSchemaDocument fail when a DTD is required. If DTD validation is needed:
Set pbDomSecondLevelProperty of hoDoc "ProhibitDTD" to False
Note: "ProhibitDTD" is case-sensitive as shown.
When using AddExternalSchemaFile / AddExternalSchemaDocument, always test the return value — failures can occur for many reasons (cannot load the document, cannot resolve externals, DTD blocking, etc.). AddExternalSchemaDocument is generally more flexible for debugging.
Web Framework
-
Removed invalid check on client-side data sorting that produced the "Client-side sorting is only allowed with manual data loading." error.
-
Improved styling of
cWebGroupso it inherits the color of its parent container (improves modal dialog rendering). -
Fixed focus errors under Internet Explorer 8 on Windows XP.
-
cWebButtonnow preventsOnSubmitfrom being triggered when Enter is pressed while it has focus (fixes Enter on Cancel button issue in modal dialogs). -
cWebEditnow haspbStopOnSubmitto preventOnSubmitwhen Enter is pressed; instead it inserts a newline (default). -
New
pbShowHeaderproperty oncWebListto hide the entire header. -
cWebColumnCheckboxnow haspeAlignto center or right-align the checkbox within the column. -
New
pbReadOnlyproperty oncWebForm,cWebEdit, andcWebColumn— disables text entry but the control still takes focus and prompt buttons still work. -
New property
piCurrentColumnoncWebGridindicates which column has focus (first column is 0). UseGetColumnObjectto get the column object handle by its index. -
Improved numeric input filter to allow entry when text is selected.
-
Added API for manipulating
cWebList/cWebGriddata without refreshing the entire list (manually loaded lists only): DataSetUpdateRowDataSetAppendRowDataSetInsertRowBefore-
DataSetDeleteRow -
Simplified initialization of
pbServerOnClickofcWebMenuItem. -
cWebColumnclasses now havepbValueAsTooltipto enable/disable tooltips showing cell values. -
OnDefineTooltipevent available on list/grid columns to customize tooltips. -
Previewer improvements:
- Show disabled & hidden tabs (select them in Code Explorer).
- Properly show selection of tab/card container.
- Allow opening disabled menus and menu items.
- Fixed scrollbar appearance when selecting the webapp object inside the previewer.
-
Studio now controls whether the previewer performs a lazy update (removing timeout can reduce "Invalid CDS Nodes" errors).
-
Improved error message for
cWebListif data doesn't contain enough columns. -
Fixed a number of sample demo and file-upload related issues:
DemoQuestionDialogfixed to not call Cancel incorrectly.psMasknow defaults to""instead ofC_WebDefault.- Fixed week number calculation to follow ISO rules (week determined by Thursday).
- Date picker now shows displayed year instead of selected year in pulldown (consistent with month menu).
- Fixed
piScreenHeightofcWebAppwhich was providing screen width. - Prevented flashing of keyboard on mobile when prompt button clicked.
- New
OnOrientationChangeevent oncWebAppfor mobile. - Refactored menus:
- Long captions now widen the menu instead of wrapping.
- New
pbShowMenuOnHoveroncWebMenuBar(menus now open on click by default). - Keyboard control for menus (arrow keys once opened).
- Improved menu positioning when page is scrolled.
- Fixed faulty session cookie handling preventing re-login after refresh.
- Progressbar with
piValuezero now hides the bar correctly. - Fixed serialization bug in the grid causing errors on empty grids.
- Fixed multi-file upload error when running in debugger.
- Fixed memory leak on file upload controls.
- Implemented
psAcceptproperty on upload controls (HTML5 browsers) to filter file types by mime and extension. - Added
StartUploadprocedure tocWebFileUploadFormforpbAutoStartbehavior. - Fixed
pbAutoStartproperty. - Fixed
DecryptKeyto avoid memory access violation. - Renamed
phoDragAreatophoDropZone(doc already used this name). - Fixed file upload prompt button display on IE8.
- Updated styling of new controls for all themes.
cWebProgressBarnow applies "WebProgressBar" CSS classname.- Fixed date-time parsing so hour can be changed.
- Fixed usage of date mask within a
cWebColumnwhich caused errors. - Ensured
OnChangeRightsis triggered during WebApp loading. psMaskon data entry objects can override the DD value.- Improved numeric entry filter:
- Both
,and.accepted as decimal separator so numeric keyboard works; the correct separator is displayed. - Improved handling of
-when text is selected.
- Both
- Rewrote date entry filter:
- Typing while text is selected is allowed when result stays valid or part of valid date.
- Added datetime support.
- Improved Windows mask entry filter behavior when text is selected.
- Added support for datetime data types, including masking and input filtering.
- Fixed order of
LoadWebAppso initial view is determined afterOnLoadofoWebApp— settingphoDefaultViewand performing login fromOnLoadworks again. - Fixed numeric filter for IE8.
- Fixed
cWebColumnComboshowing value instead of description. - Changed
cWebButtonpbShowWaitDialogso its initial value doesn't override aSetActionModein theOnLoadevent.
Web Services
- Addressed a JSON Web Services bug: posting an
integerparameter with large numbers was not properly handled (it only seemed to read the first character for numbers with 7+ characters). This was fixed.
Studio
Studio WSDL Parser
- Added support for more schema constructs (including handling schemas with nested elements and improved type resolution). Requires change in
cClientWebService.pkg. - Added support for nesting in schemas.
- Fixed bug where choice enumeration define names were not converting
-to_. - Optional support for treating elements with no type information as strings (controlled by a checkbox; disabled by default). Note: technically anyType is different from string — enabling this parses such elements as
xs:stringfor convenience when the provider did not provide types. - Changed defaults for
nullableandnillablesupport toFalse. - Improved ability to resolve nodes to built-in types, producing fewer unneeded structs.
- Improved detection of bare-response types when the main response contains attributes.
- Fixed parsing bugs with
complexTypeattributes. - Fixed arrays defined via
did/extensionoddities.
Other Studio fixes and improvements
- Fixed image error reporting in Create New dialog and updated 32x32 image error bitmap.
- Create New now supports
.icofiles for custom items. - Fixed bug when clicking Field Chooser in Table Viewer if another panel has focus (reported by Bob Cergol).
- Fixed Bug 6643: Add validation table dialog needs better
piMinSize. - Fixed Bug 6630: Long DataDictionary field labels with double quotes caused modeling error.
- WSDL parser previously generated wrong source for base64 params — fixed.
- Modified launch of WebApp Check tool to pass
-rparameter so it runs automatically when loaded. - Table Editor:
- Default data type when creating a new column is now
char(10). - Adds an extra column for the DF Type when modeling an SQL table (only enterable if driver native type metadata specifies > 1 allowed DF type).
df_field_typeattributes in Properties Panel are read-only.- Support for native SQL datetime types that map ambiguously to multiple DataFlex types improved.
- "Register WebApp" button in Project Properties and OK button in Create Virtual Directory dialog now include the Windows shield icon.
- Visual Designer support added for Button image/shield properties,
cSplitButton,cCommandLinkButton, andTreeView pbExplorerStyle. - Button properties:
pbShieldpsImagepiImageSizepiImageMarginLeftpiImageMarginRightpiImageMarginToppiImageMarginBottompeImageAlign
cSplitButton,cCommandLinkButton(psNote),TreeView(pbExplorerStyle)- Added
cSplitButtonandcCommandLinkButtonto the Class Palette. - Modified appearance of Studio CJ grid controls to use subtle "small dots" grid lines for smoother transition to CodeJock controls.
- "Nudge Objects" panel dialog updated to use Button
psImageproperty with correct transparency. - Fixed Table Editor bug when Table Viewer open to same file — Table Viewer now properly tests whether the table is open/changed and avoids closing incorrectly.
- Added recursive expand tree item to Code Explorer context menu and improved context menu captions.
- Debugger variable evaluation tooltips now restricted to 600 characters (max 4 lines of 150 chars). Embedded line breaks preserved up to max width.
- Cleaned up some Create New template descriptions.
- Refined Code Editor column information tooltip.
- Table Editor now removes "unknown type" item from combo list after column creation. The 'unknown type' item renamed to 'choose a type'.
- Removed old Icon Extractor module and replaced with Windows Open File Dialog (fixes crash in Windows 8 and modern icon formats).
- Fixed problems with column information tooltips and Data Dictionary Modeler auto increment dialog (reported by Vincent).
Connectivity / CLI CKs (Embedded SQL)
- New
sql.pkgfor embedded SQL: - Several performance improvements (speeding SQLColumnValue).
- New functions:
Fetches a row and returns all columns in an array.
Function SQLFetchRowValues Returns String[]Fetches all rows of a result set and returns them as a 2-dimensional array.Function SQLFetchResultsetValues Returns String[][] -
Removed command interface (still available in
sqlold.pkg). -
Special Note: new
sql.pkgrequires connectivity kits version 6.0.0.28 or later. The previous version is available assqlOld.pkgfor earlier kits. -
Fixes:
- On a SQL Server
datetimecolumn: changing DF_Type fromDF_DatetoDF_Datetimesometimes set SQL type to "unknown type" — fixed. - Setting Native_Type to "unknown type" previously generated an unsupported backend error — fixed.
WebApp Check
- Added "WebApp Check" menu item to run the DataFlex WebApp Check tool.
- Modified the launch of WebApp Check tool to automatically run WebApp Check when loaded (passes
-r).
Flexerrs / Misc Fixes
- 5834: Move external function declaration out of
cLinkedLabel.pkg. - 4872: Add special
Destroy_ObjecttocCjStatusBarclass. - 5865: Reset
ghoApplicationto 0 inDestroy_ObjectofcApplication. - 6494: Lowercase in
DD_OperationCheckerat the wrong location — fixed. - 6464:
LoadDataincdbcjgridpromptlistqueries but does not usephoInvokingObject— fixed. - 6642:
Entry_Client_mixinuseddefine_Auto_Locatetwice — fixed. - 6470:
ListRowCountdoes not work fordbComboFormclass — fixed. - 6513: Add metadata tag for
Transparent_Stateto be used for a checkbox. - 6398: Allow specifying the class name for the
RequestColumnSearchdialog: - New function:
Function CreateGridSearchDialogObject Returns Handle. RequestColumnsSearchnow callsCreateGridSearchDialogObjectwhich returns a search dialog object (by defaultcCJGridSearchDialog). You may augment this function (advanced technique).- 6528: Extend
ComboFormclass withForm_Marginsupport: - Behavior changed to better support horizontal scrolling while entering text.
- If
entry_stateisTrue, horizontal scrolling is always allowed.Form_Margincontrols text limit:- If
Form_Marginis0or default-1, no text limit is applied. - If
Form_Margin> 0, ComboForm's text limit is set toForm_Margin.
- If
- Normally a ComboForm has
Form_Marginof 0. Prior to 18.0,dbComboFormhadForm_Marginof 100; in 18.0 adbComboFormdefault is-1(meaning default). For ComboForms we do not setForm_Marginto the database field length (unlikedbForm) because ComboForms often contain other text (validation lists). SetForm_Marginexplicitly if you know the limit. -
When
Entry_StateisFalse, previous behavior applies. -
Real-to-string casting adjustments:
- When a number is real, precision is reduced to 15 digits to mask floating-point inaccuracies (e.g.,
.1,22.05,72.35). Integers are treated differently to avoid scientific notation issues (e.g.,8e8). -
No impact on WebApps that serialize as JSON strings.
-
Studio WSDL parser changes (see Studio section).
CLI / All CLICKs (Embedded SQL)
- See Connectivity/CLI CKs above for
sql.pkgchanges and new functions.
Help / Documentation
- Added F1 support for Help.
- Minor bug fixes and button behavior changes.
- Installation Mode:
- Now runs automatically if called with the parameter.
- Improved the "you MUST reboot" message.
- Improved IIS 32-bit detection.
- Stand-alone mode:
- Added CGI restrictions test.
- Misc fixes and typos.
-
Updated help file and install automatically.
-
Implemented CodeJock grid in the tools:
- Added "find error number" form in the toolbar.
-
Sortable on all columns.
-
Documentation additions and updates:
- Added doc for new classes and members:
ButtoncSplitButtoncCommandLinkButtonTreeView pbExplorerStylecWebFileUploadButtoncWebColumnLinkcWebColumnButtoncWebColumnImagecWebColumnDate
- Added doc for
pbComboSortandComboInitialize. - Added doc for edit controls'
ReadOnlyColorandpbNoEnterReadOnly. - Updated docs that use
tWebRowto the new version oftWebRow(please review). - Updated "What's New" with preliminary Windows Framework additions.
- Updated information about web properties.
- Language Reference: added index entries for
DF_ASCII,DF_BCD,DF_DATE,DF_DATETIME,DF_OVERLAP,DF_TEXT,DF_BINARYand linked them to the "DF_FIELD_TYPE" topic in the Database API Attributes book.