Bugs Fixed in DataFlex 19.0
Runtime
Comparisons with Decimal datatype might result in an overflow error
Bug 7361, reported by Quality Assurance
If a comparison is performed on a Decimal datatype the comparison may raise an Operation Overflow error and return a wrong evaluation. For example:
Decimal gd1 gd2
Move -200 to gd1
Move 9999999999999999 to gd2
If (gd1 > gd2) Begin // this raises an error. bad
End
This will raise an overflow error for the evaluation. This is a byproduct of the comparison logic which subtracts these two numbers. This causes an overflow, which raises an error when it should not.
Note that an actual subtraction should raise an error:
Decimal gd1 gd2 gd3
Move -200 to gd1
Move 9999999999999999 to gd2
Move (gd1 - gd2) to gd3 // this raises an error. expected
In addition there are very rare cases where a Number datatype will return an improper result for comparison. This is also a side-effect of the internal subtraction but only happens when there is an overflow that is exactly 0.
Number gn1 gn2
Move -.001 to gn1
Move 99999999999999.999 to gn2
If (gn1 > gn2) Begin // will return true. bad
End
Both of these issues are very old as the number comparison logic for Number and Decimal have not been changed for years.
Setting a mask in windows framework that is longer than 255 characters results in memory overwrite
Bug 7347, reported by Vincent Oorsprong
Setting a mask in the windows framework (psMask or Form_Mask) that is longer than 255 characters causes a memory overwrite. It is not expected, or all that practical, to create a mask that long. Masks should not be longer than 255 characters and if they are they should be truncated at 255 characters.
Example:
Object oSalesPName is a cDbCJGridColumn
Entry_Item SalesP.Name
Set piWidth to 300
Set psCaption to "Name"
Set peDataType to Mask_Window
Set psMask to (Repeat("*",300))
End_Object
Manual finding and changing the Found indicator inside OnConstrain may result in the find improperly failing
Bug 7284, reported by Quality Assurance
Manual finding and changing the Found indicator inside OnConstrain may result in the constrained find improperly failing.
The DD methods Read_By_Recnum, ReadByRowId and ReadByRowIdEx all exhibit the same behavior. If a constrained find is successful it should return True, otherwise false. In rare cases, it is possible for a constraint test to set the DataFlex Found indicator to False. If that happens the constrained find is considered a failure, even if the constraint test succeeded!
The primary way Found can be altered is to have a constrain-as that calls a custom function that finds a record in some other table. Finding records inside of a constraint function is a fragile technique.
The runtime now makes sure that Found is not improperly altered by a constraint test.
This is not new to 18.2; this has always worked this way.
SearchArray with an array of the Address type always returns 0
Bug 7283, reported by Jeroen Steehouder
When creating an array of type Address[] then SearchArray returns 0 even when searching for a value that is not in the array. The sample below demonstrates the issue where iIndex becomes 0 where it should be -1.
Procedure Example
Address a1 a2
Address[] aaVars
Integer iIndex
Integer iVar1 iVar2
Move 0 to iVar1
Move 0 to iVar2
Move (AddressOf(iVar1)) to a1
Move (AddressOf(iVar2)) to a2
Move a1 to aaVars[0]
Move (SearchArray(a2, aaVars)) to iIndex
If (iIndex = -1) Send Info_Box "Correct!"
Else Send Stop_Box "Wait... what... ?!"
End_Procedure
AppendArray parameter indexLast is ignored
Bug 7275, reported by Quality Assurance
The function AppendArray does not use the last parameter, called indexLast. Instead, it always appends the complete second array to the first array.
Code sample:
String[] ucResult ucFirst ucSecond
Move "a" to ucFirst[0]
Move "p" to ucFirst[1]
Move "p" to ucSecond[0]
Move "l" to ucSecond[1]
Move "e" to ucSecond[2]
Move (AppendArray(ucFirst, ucSecond, 0, 1)) to ucResult
This results in 5 elements in ucResult instead of 4.
Setting ComBold to true makes the color of the cell without focus be white
Bug 7111, reported by Ronaldo Nakamashi
In trying to color a bold font in a cDbCJGridColumn object, when pbSelectionEnable is True, the font on the selected row is white by default.
The problem is that cells configured to use a different color and bold will use the white font color when the cell doesn't have the focus.
To reproduce:
- Drop the attached Order.vw in the Order sample workspace
- Run the sample
- Find an order
- Click on 'Item ID' on the grid — notice the color of the Description column (in bold) will turn white
Random function combined with process pooling
Bug 6610, reported by Bob Cergol
When using the Random function on a web application that runs using process pooling the outcome doesn't seem to be very random. As the random generator is seeded with the time on startup of the webapp process there is a big chance that they will be seeded with the same value. This results in the Random function returning the same sequence of numbers for the different processes.
Example web-service function:
{ Published=True }
{ Description="" }
Function RandomNumber Integer iMax Returns Integer
Function_Return (Random(iMax))
End_Function
If this function is called multiple times on a webapp with process pooling enabled and a minimum pool of 2 you may get the same number twice in a row. Sometimes the web application needs to be restarted to re-seed the processes.
Context for error 11 (field too large for field) is lost when this occurs inside of a transaction
Bug 5632, reported by Bob Cergol
When an error 11, "Field too large for field allocation", is encountered the error report is supposed to include the table/column where this occurs. Normally this happens such as:
Procedure Activating
Forward Send Activating
Move 9999999999 to customer.customer_number
End_Procedure
However when this occurs inside of a DD save (e.g. Save_main_file or Request_Entry_update) or within an explicit transaction, the context information is not displayed.
Example. Add a button to Order.vw with the following code:
Procedure OnClick
// if within a transaction, api context is lost. Remove the transaction, it works
Begin_Transaction
Move 999999999 to Invt.On_Hand
End_Transaction
End_Procedure
Database Explorer
Single record view mode can blow up (in height) the size of the controls
Bug 7353, reported by Quality Assurance
When store and reload of MRU data is turned on the single record view mode can create huge controls on the screen.
Test steps: 1. Turn on the option (and for testing the confirm question option so that you know the values are used!) 2. Open table in single record view mode 3. Close table (Get layout saved) 4. Open table again and see controls that are out of proportion.
Switching between grid and single record view mode does not display text column values
Bug 7352, reported by Arnold Franken
The contents of a text column are not shown when switching between grid line mode and single record view mode.
Exclude column from grid when length = 0
Bug 7349, reported by Quality Assurance
Exclude a table column from the data grid when its length is zero.
For example, SQL column types (such as SpatialLocation, a geography type, in the AdventureWorks sample database table Person.Address) return a length of 0 bytes. These should not be displayed in Database Explorer.
Invalid message DoCloseExploredTable
Bug 7348, reported by Quality Assurance
If you have a table open and choose "Close" from the floating menu in the filelist tree you can get an error 98 (invalid message) DoCloseExploredFile.
Wrong icon displayed when closing DBE while maximized
Bug 7334, reported by Quality Assurance
When maximizing DBE and then closing it, next time we open DBE, it will be large on the screen BUT not maximized — the system icon is set to "maximize" and we can go a tad bigger. DBE should have been opened maximized instead.
Note: when closing 18.2 DBE while maximized, it opens back up still maximized and the icon is correct. The wrong icon displaying is new to 19.0.
Database Explorer may be positioned on the wrong screen when using multiple monitors
Bug 7333, reported by Anders Ohrt
When starting Database Explorer, it is positioned on the wrong screen and mostly outside of the screen.
The Studio and Database Builder do not do this, so something is "special" about Database Explorer. It has been like this for several revisions.
Example setup: three monitors, with the central one being the "main" one. From left to right, Windows numbers them #2, #1, #3.
If DBE is not maximized, closing it and restarting restores its previous position. But, if DBE is maximized and then closed, on restart it may be positioned wrong. For example, maximizing DE on the main monitor (#1), closing and restarting may position DE non-maximized on monitor #3 with only the caption bar visible.
'Filter by Value' now uses the 'current value' of the column instead of the 'changed value' as in previous revisions
Bug 7330, reported by Anders Ohrt
When using the "Filter by Value" function in Database Explorer, the "current value" of the column is used, not the "changed value" as it was previously (in 18.2 and earlier).
Previously, you could enter a column, enter the value you wanted to search on, and select "Filter by Value" to filter. In 19.0, if you do the same it will search on the value that was in the column when you entered, not the new value you've entered.
Example:
1. Open the Order Entry workspace in Database Explorer 19.0.
2. Select the OrderDtl table.
3. Select the Order_Number column, first row.
4. The current cell will contain "101".
5. Enter "110" and press Alt-R + V.
The result is that your input is ignored, and all "101" rows are shown instead.
Open table via TABLE.INT does not work with Managed Connections
Bug 7328, reported by Hans van de Laar
Dragging and dropping several .INT files that contain a different connection ID than the current workspace on the interface causes issues. The connection IDs are read from either dfconnid.ini or .INT. Same can be done by pressing the open-as button or opening an .INT file via file extension association.
If you use the file association of .INT with Database Explorer and the INT file uses a connection ID while the data folder does not contain a .int file with a connection ID, you cannot open the table anymore.
Writings in dialogs may display too small when in high DPI
Bug 7326, reported by Andreas Berg
When the display's DPI is set high (e.g. 250%), the font in the "tip of the day" dialog can be too small to be readable — it doesn't scale like the rest of the screen.
Change Columnvalues init columnname does not work when field number is shown in the grid caption
Bug 7317, reported by Matthias Burkhardt
If the "Show Column numbers in label" is turned on the popup of "Change Column Values" does not initialize itself correctly.
Testing steps: 1. Turn on the show field numbers in label option 2. Open table in grid mode 3. Press Alt+M for Modify Column Value
Result: It does not default to the current column.
Collapsed table branch can show '-' sign
Bug 7095, reported by Andrew Kennard
- Expand a table branch (e.g. Order Detail)
- Expand its Parent branch
- Click on one of the parent table names
- Click on [+] at the table root branch again to collapse the tree
Result: You are left with a [-] in the tree next to the table name and will not be able to expand the tree branch again.
A maximized panel does not remember on which monitor it was maximized
Bug 7063, reported by Clive Richmond
DbExplorer doesn't remember which monitor it was last on. Example behavior: - If DbExplorer starts up on monitor 1 and you switch it to full screen, close and re-open then it remembers this. - If you move DbExplorer to monitor 2, switch to full screen, close and re-open then it does not. It is restored full screen but on monitor 1.
Installation
Button to Activate DataFlex Personal Edition does not work
Bug 7329, reported by Ronaldo Nakamashi
After installing 19.0 DataFlex Studio PE, the "Activate DataFlex Personal" dialog comes up but clicking on the "Get Activation Code" button does not do anything.
API
Attempting to delete a CLI, non-temporary index outside of a structure_begin/end block raises access violation
Bug 7318, reported by John Tuohy
In 19.0, the CLI drivers allow creating and deleting temporary indexes outside of the Structure_Begin / Structure_End block. You can only delete a temporary index outside of this block. If you attempt to delete a normal index, you get an access violation. You should get an error instead.
Example:
Open Customer
Delete_Index Customer.File_Number 1
Of course, this is a programming bug and you should not attempt this, but the error should not be an access violation.
Error occurs with CLI driver 6.2.0.40.
Packages
SQLStrAppend may fail when parameter replacement string contains wildcard characters with numbers
Bug 7341, reported by Quality Assurance
When you use SQLStrAppend while the source filter uses wildcard characters (% in SQL Server) combined with numbers (e.g. '%2013%') the append creates a bad result.
Example:
String sFilter1 sFilter2 sFilter
Move "Project.ProjectId like '%2013%'" to sFilter1
Move "Project.ProjecName like '%2013%'" to sFilter2
Get SQLStrAppend of oProject_DD sFilter1 sFilter2 to sFilter
Results in:
(Project.ProjectId like 'Project.ProjecName like '%2013%'013%') AND Project.ProjecName like '%2013%'
cMonthCalendar class: OnChangeDate should be OnChange
Bug 7340, reported by Quality Assurance
The OnChangeDate event in the cMonthCalendar class is misnamed. It should be OnChange.
pbLoginOnOpen has a wrong initial value
Bug 7335, reported by Emil Stojanov
The property pbLoginOnOpen is documented with a default of True and it is True, but the properties dialog shows False.
Copying and pasting from a ValidationTable-connected grid combo to another only copies the number of chars in the value
Bug 7319, reported by Mathew Davidian
Copying and pasting from a ValidationTable-connected grid combo to another only copies the number of chars in the value, instead of the description.
STEPS:
1. In the Order Entry sample workspace, add an ASCII 1 column named VTTest to OrderDtl
2. Add this VT to the DD:
Object VTTestVT is a DescriptionValidationTable
Procedure Fill_List
Forward Send Fill_List
Send Add_Table_Value "A" "Hispanic Male"
Send Add_Table_Value "B" "Hispanic Female"
Send Add_Table_Value "C" "White Male"
End_Procedure
End_Object
- Add this grid column to the grid in
Order.vw:
Object oOrderDtl_VTTest is a cDbCJGridColumn
Entry_Item OrderDtl.VTTest
Set piWidth to 28
Set psCaption to "VTTest"
Set pbComboButton to True
End_Object
- Compile and run
- Try to copy a value (description) from the DescriptionValidationTable to another column.
Result: Only the first character is copied.
RemoveNamedNode causes memory leak
Bug 7311, reported by Woody Spencer
Sending the method RemoveNamedNode to a cXmlDomElement object or any object that is based on a class that uses cXmlDomNodeMixin will result in a memory leak. This leak does not occur with RemoveNamedNode in the cXMLDOMNamedNodeMap class.
This bug only impacts you if your code calls RemoveNamedNode.
TEST STEPS:
1. Replace XML-2.vw in the Specialized Components sample workspace with the attached sample view.
2. Open the Studio to the Specialized Components sample workspace
3. Compile and run XML-Sample.src
4. Open XML - Example 2 from the menu
5. Open Windows Task Manager to monitor memory usage
6. Repeatedly click on the 'Write Customer to XML file' button
Result: Watch the memory go up and not back down
This bug goes back to the earliest versions of XML support in DataFlex.
Using Set Field_Current_Value to pass a text/binary type doesn't work when Value is not a string datatype
Bug 7306, reported by Vincent Oorsprong
If you use Set Field_Current_Value or Set Field_Entry_Value to update an extended DD field value (df_text or df_binary) it will only work if the value passed (sValue) is a string. Passing something else, like a Variant, and expecting automatic type casting will not work.
Example:
Variant vVar
Move "Test" to vVar
Set Field_Current_Value of Customer_DD Field Customer.Comments to vVar
This will put undefined data into this DD field buffer.
This only happens if:
1. You call Set Field_Current_Value (Set Field_Entry_Value) with something other than a string (in the above example vVar is a variant)
2. The Table field value type you are setting is df_text or df_binary (in the above example Customer.Comments is df_text).
Normally you would not use Field_Current_Value for text/binary types, but it is supported and should work.
Using CJ grids with pbNeedPostEntering causes mouse navigation problems and errors
Bug 7286, reported by Doug Goldner
Setting pbNeedPostEntering to True in a cCJGrid's OnEntering event may raise errors or show strange behaviors when used with mouse navigation.
To duplicate:
1. Add to order.vw's cDbCJGrid object:
Procedure OnEntering
Set pbNeedPostEntering to True
End_Procedure
- Find first order.
- Double click on the 3rd row's QTY column.
Depending on the version you may get a COM error or you may see the edit box on the wrong row (1st row) and the edited value (in the third row) having the wrong value (1st row value).
Mouse navigation to a different row/column when post-entering is enabled is limited. It should not navigate to a different row but stay where it was (this is a limitation of using the post-entering logic). Whenever possible avoid using post-entering and pbNeedPostEntering.
Bottom selection of Scrollbar menu on legacy Grid or dbGrid causes an error
Bug 7285, reported by Quality Assurance
If you right-click on the scrollbar on a legacy Grid or dbGrid, and choose the "Bottom" option, the app will generate an error. Stack trace:
SET_TOP_ITEM (16) - oGrid (51) - at address 22135
MSG_KEY (55) - oGrid (51) - in native code
MSG_KEY (55) - oGrid (51) - at address 1331
MSG_KEY (55) - oGrid (51) - at address 21738
MSG_SETVSCROLLBOX (1192) - oGrid (51) - in native code
MSG_SETVSCROLLBOX (1192) - oGrid (51) - at address 22041
MSG_CREATE_DIALOG (711) - oMain (49) - in native code
MSG_CREATE_DIALOG (711) - oMain (49) - at address 916
MSG_ACTIVATE (117) - oMain (49) - in native code
MSG_ACTIVATE (117) - oMain (49) - at address 1684
MSG_ACTIVATE (117) - oMain (49) - at address 15983
[start] - at address 73272
cDbCJGrid finds wrong records after prompt list cancellation
Bug 7254, reported by Raveen Ryan Sundram
Tested and found this exists in DF18.x and DF19.0.
STEPS: 1. Start/Run Win Order Entry 2. In the "Order Entry" view - press the prompt button for the "Order Number" field - Prompt list displays and should be highlighting order "101" 3. Press the CANCEL button - You should be back in the "Order Entry" view and cursor should be on the "Order Number" field 4. Click anywhere on the grid (e.g. Description field)
Result: Grid is refreshed with a blank row and part of the order number 101 lines.
IsFieldCommitted should be public
Bug 7225, reported by Peter Bragg
IsFieldCommitted is defined as Private in BaseData_Set.pkg and is not listed in CodeSense. However, it appears in documentation and slides suggesting it was intended to be public. This will be double-checked to ensure 19.0 is accurate.
cWebEdit allows data with bad characters to be saved
Bug 7212, reported by Quality Assurance
Invalid control characters saved in web applications may cause JSON parse errors on the client:
Unhandled Program Error on the client
Received Invalid JSON from the server.
Error: 999
JSON parse: bad character in string literal at line 1 column 2484 of the JSON data
Test Data (saved and displayed correctly in BugTracker's older pre-JSON WebApp framework):
Blab la
Test 1
Test 2
WinPrint2_api.pkg has an ending ; in an External_Function declaration
Bug 7146, reported by Allan Kim Eriksen
Example incorrect code:
External_Function WP_SetUserDefinedPapersize "SetUserDefinedPapersize" WinPrint.dll ; // sets the size of user-defined paper
UInteger iPaperSize ; // hi-word=length; lo-word=width
Returns Boolean; // True, if success; False if error occurred
The final ; after Returns Boolean is incorrect.
Wrong translation to Portuguese for the Month of May
Bug 7135, reported by Quality Assurance
In Portuguese, the short for the month of May (MAIO) is MAIO.
cCJGridColumnEdit.pkg and cCJGrid.pkg have method starting as procedure and ending as Function
Bug 7133, reported by Joao Mauricio Rinardo
Examples mixing Procedure and Function syntax:
cCJGridColumnEdit.pkg:
// Any navigation to custom edit is not treated as a focus event
// see counterpart in cCJGrid.pkg
{ NoDoc=True}
Procedure ObjectFocusChanged Handle hoFrom
Function_Return
End_Function
cCJGrid.pkg:
// from custom edit to grid, is not treated as a focus event. By the time this is called, the edit is probably deactivated
// and phoCustomEdit is 0. We will assume that an inactive from object is a closed edit and do nothing.
// see edit control counterpart in cCJGridColumnEdit.pkg
{ NoDoc=True }
Procedure ObjectFocusChanged Handle hoFrom
Boolean bCancel
If (hoFrom>Desktop and hoFrom<>phoCustomEdit(Self) and Active_State(hoFrom)) Begin
Forward Send ObjectFocusChanged hoFrom
End
End_Function
These should consistently use Procedure/Function syntax.
cImageList32 doesn't pick the best icon size for the imagelist's requested height and width
Bug 6311, reported by Emil Stojanov
cImageList32 doesn't pick the best icon size for the imagelist's requested height and width. When an icon file is added via AddImage or AddIcon it should pick the closest image from the file and scale. Instead it uses the default large icon size and scales from there. AddIcon calls LoadImage() using LR_DEFAULTSIZE which looks for the large icon size and scales from there. It should be changed to pass height and width of the image list.
Help
Language Reference: Get_Licensed_Max_Users has incorrect description
Bug 7350, reported by Quality Assurance
The Help for Get_Licensed_Max_Users states that it will return the maximum number of concurrent users licensed for the current serial number. That is not true — client licenses with different serial numbers can be stacked and Get_Licensed_Max_Users will return the total number of users for all stacked client licenses.
Language Reference: IsAdministrator Function has wrong example
Bug 7338, reported by Ivan Kaupa
Help\LanguageReference.chm::IsAdministrator.htm contains an incorrect example.
Incorrect example:
// Is user running the program as an administrator?
Move (IsAdministrator()) to bIsAdmin
If bIsAdmin Begin
Since the function returns True if the program is running with administrative privileges, the conditional should be:
If (not (bIsAdmin)) Begin
Data Dictionary Modeler: keyboard shortcut to move between columns, but stay on same property, has disappeared
Bug 7313, reported by Mathew Davidian
In previous versions Ctrl+PgUp and Ctrl+PgDn could be used to go up/down the column list while staying on the same property. In 19.0 this behavior changed and now duplicates Ctrl+Home / Ctrl+End. This feature is documented on the "Data Dictionary Column Properties" help page. Note: this was a doc mismatch — the hot key was changed to Ctrl+U and Ctrl+D.
Documentation should state that AddressOf function should not be evaluated by Eval()
Bug 6593, reported by Samuel Pizarro
The Eval() function should document that not all functions can/should be evaluated using Eval(). In particular, functions that are passed or return memory pointers (address type) should not be used within an Eval(). For example, AddressOf() should not be used inside of an Eval() expression.
Documentation should be updated to reflect this guidance.
Studio Wizards
SQL Connection Manager: Unhandled error when right-clicking on caption row
Bug 7272, reported by Clive Richmond
Right-clicking on the caption row produces an Unhandled Studio Error:
C:\DataFlex 19.0\Bin\Studio.exe
Context menu not attached to commandbars
Error: 4402
Please report this error to Data Access Corporation
Stack trace:
MSG_POPUP (290) - oObject (1954) - at address 58018
MSG_ONHEADERRIGHTCLICK (11076) - oConnectionsGrid (1921) - at address 73060
...
[start] - at address 248634
WSDL import wizard creates 'Construct_object' instead of 'Construct_Object'
Bug 5224, reported by Quality Assurance
WSDL import wizard creates Construct_object instead of Construct_Object. Note the casing.
Studio
Studio issues with alias tables when using SQL drivers. Adding an alias or refreshing an alias raises errors
Bug 7362, reported by Quality Assurance
When working with SQL drivers: 1. Adding a new Alias table to the Studio will output an error to the Studio's Outpanel. The operation is actually fine. 2. Refreshing the Alias table from the Studio will raise an error and the Refresh will not occur.
This is new to 19.0 and a side-effect of the more comprehensive refresh logic.
Note: Refreshing the main (non-alias) table also refreshes all alias tables. Refreshing the alias table directly is allowed, but may be of limited value.
Is$WebApp conditional is not being automatically maintained when opening a Windows Project
Bug 7337, reported by Quality Assurance
Is$WebApp conditional for projects is not being added to Windows projects automatically.
To reproduce:
1. Open a workspace with a single Windows Project (e.g. Order Entry).
2. Tools → Configure Workspace → Conditionals.
3. If Is$WebApp is present then remove it, save, restart the Studio and open the workspace.
4. Is$WebApp is not present — it should be added automatically when opening a project.
Start Center News Feed shows pointer cursor shape on non-clickable text
Bug 7312, reported by Quality Assurance
Start Center item description shows a "hand" pointer suggesting it's a link, but it's not clickable.
If you open the Studio with the Code Editor open, it is inactive until you click in another pane
Bug 7261, reported by Quality Assurance
Steps: 1. Open the Studio to any workspace 2. Open one view in the Code Editor 3. Close the Studio 4. Open the Studio and reopen the workspace (ensure Studio is not configured to auto-reopen the workspace) 5. Code Editor is inactive until you click another pane and back
The save icon is not responding to source code changes until the Studio has initialised the designer
Bug 7244, reported by Ian Smith
- Start Studio and open a workspace
- Ensure a source file is open in code mode and selected
- Restart Studio and reload the workspace
- Make code changes — the Save icon does not become active
- Toggle in/out of designer mode or switch to a designer tab and the Save icon will start responding
In the Studio cDbCJGrids and cWebGrids, Field_Label_Long is not used when Field_Label_Short is blank
Bug 7240, reported by Raveen Ryan Sundram
When adding DEO labels via the DDO Modeler drag & drop, the Studio should use Long labels for form DEOs and Short labels for Grid Column DEOs. If Short Label is blank, the Long Label should be used. With cDbCJGrid and cWebList/Grid columns, the Long label is never used — the column name is used instead.
How to test:
1. Set only the Long Label for a field; ensure Short Label is blank.
2. Insert a cDbCJGrid in a view.
3. Using the DDO Explorer, drag the field to the grid.
Result: Column name is created using Field_Label_Short (blank) and falls back to the column name without considering Field_Label_Long.
Code generated by WebServiceClassGenerator does not compile
Bug 7220, reported by Hans van de Laar
Creating a client webservice class with "Support Simple Type with null member" selected creates code that will not compile. The fix: added DefineQualSimpleNullableParameter.
Dashboard text overrun
Bug 7164, reported by Quality Assurance
When long strings are displayed on the dashboard (e.g. connection string), the text may run beyond the designated area.
Crash when selecting a table in the Data Dictionary Modeler's Structures Tab
Bug 7159, reported by Vincent Oorsprong
Steps: 1. Open the DD Modeler 2. Use the suggestion list to select a table in any of the DD's Required Parent, Required Child or External Table list 3. Use the mouse to click and select a table from the suggestion list
Result: Crash
Web Server
Wasadmin automatically completes a manually entered name to an existing name while you probably don't want to
Bug 7231, reported by Quality Assurance
When registering a new web application using the Web Application Administrator it autocompletes the virtual directory name if the one entered is a part of a full name. So if you already have WebOrder_19 it may not allow you to create a share called WebOrder.
To reproduce:
- Ensure a share WebOrder_19 or WebOrder_18_2 exists
- Open Web Application Administrator → Configure New Web Application
- Select a WebApp.exe
- On the 'Please select a web server share...' step enter WebOrder as the virtual directory name
- Press Next then Previous — the virtual directory name may have changed
This problem has existed for a long time.
Web Application Administrator shows negative values for messages
Bug 7172, reported by Evertjan Dondergoor
Long-running web applications with lots of traffic sometimes show negative values for 'Client Messages' and 'Server Messages'.
WebApp Framework
Error 4402 on back navigation using breadcrumb
Bug 7363, reported by Jacques Delannay
When navigating back using the breadcrumb it sometimes gives error 4402: Object .. is out of scope for WebGet ...
To reproduce: 1. Use Google Chrome (62.0.3202.94) 2. Open the WebOrderMobile sample 3. Login (must login if not already) 4. Open the customer select from the dashboard 5. Open the customer zoom by clicking the (i) button 6. Click on 'Select customer' in the breadcrumb
Result: Error 4402 occurs.
Note: This turned out to be a bug in the Chrome password manager that invalidly triggers focus events on the password field. It doesn't happen in Incognito mode. See: https://bugs.chromium.org/p/chromium/issues/detail?id=780834
Large amounts of server property data are not always stored properly
Bug 7358, reported by Quality Assurance
With a large amount of server properties or with big values, the server property system can fail due to calculation bugs in the pagination system. The properties are serialized to JSON and if they don't fit in a single record they spread across multiple records improperly.
cWebAccordionContainer: Controls inside accordion cards can sometimes still get the focus
Bug 7357, reported by Quality Assurance
When nesting an accordion container inside a tab container then controls on an expanded card can still receive focus when on another tab. This can cause the controls to display and scramble the screen contents.
To reproduce:
- Place the attached Order.wo in WebOrder
- Run WebOrder and follow displayed instructions
Result: Contents of tab pages may disappear or move position or move to another tab.
cWebList: Search on manual list fails when ordering is reversed
Bug 7346, reported by Hans van de Laar
The built-in search function of the list fails when the list is sorted in reversed order. This only happens when the search is performed on the client (peDbGridType=gtAllData / gtManual or pbDataAware=False).
To reproduce: - Add the attached view to WebOrderMobile - Sort on the first column, reverse sorting, type "elev" and press Enter Result: It should jump to "Eleven West" but it doesn't.
Note: This is new in 19.0.
cWebForm: Error on WebSet of psMask before the control is rendered
Bug 7342, reported by Raveen Ryan Sundram
Performing a WebSet of psMask (cWebBaseDEO) before the view containing the form is rendered causes a JavaScript error which prevents the view from rendering completely.
To reproduce:
- Open WebOrder, Customer.wo view
- Under oWebTabContainer | oAddress_page, find oCustomerPhone_Number
- Place this code in the oCustomerPhone_Number object:
Procedure Refresh Integer eMode
String sMask
Forward Send Refresh eMode
If (not(AppSynching(Self))) Begin
If (Customer.Phone_Number > "") Move "(###) ###-####" to sMask
WebSet psMask to sMask
End
End_Procedure
- Run in Chrome and open Developer Tools
- Select View | Customer Maintenance — watch for errors like:
Uncaught TypeError: Cannot read property '_oDfDomH' of null at Object.removeDomListener
WebList: JavaScript error when double clicking header
Bug 7336, reported by Quality Assurance
Double-clicking on the list header causes a JavaScript error: this.oC.headDblClick is not a function.
To reproduce: - Open WebOrder and run in Chrome - Select Demo | Grids and Lists | Constrained Grid - Double-click a column header (e.g. Address) Result: Error like:
Uncaught TypeError: this.oC.headDblClick is not a function
at WebListHeaderView.onHeadDblClick
WebSetResponsive on pbFillHeight of cWebTabContainer causes script error
Bug 7331, reported by Hans van de Laar
Using WebSetResponsive on pbFillHeight of the cWebTabContainer, setting it to False on rmTablet causes a JavaScript error when the view is rendered.
Example:
Object oWebTabContainer is a cWebTabContainer
Set pbFillHeight to True
WebSetResponsive pbFillHeight rmTablet to False
End_Object
To reproduce:
- Add the example to DemoSlider.wo (WebOrder)
- Run in Chrome, toggle device to iPad, view Demo | Controls | Slider
Result: Error like:
Uncaught TypeError: Cannot read property 'appendChild' of null
at WebTabContainer.renderAllCards
at WebTabContainer.set_pbFillHeight
Clicking the X of a modal dialog in the designer actually closes it
Bug 7304, reported by Sture Andersen
The designer does not properly disable the close button of a modal dialog so it can be closed in the designer, leaving the designer in an unusable state.
To reproduce:
- Open a modal panel such as SalesPWebLookup.wo in Designer view
- Click the X in the captionbar of the panel inside Designer view
Result: The panel disappears from the designer
Forward keyboard navigation to cWebGrid with first column disabled fails
Bug 7250, reported by Bob Cergol
STEPS:
1. Open Order.wo in WebOrder
2. Comment out last 3 DEOs in header
3. Set first order grid column (oInvtItem_ID) to pbEnabled=False
4. Compile and run
5. Find an order
6. Press Tab to move to Order Date and again to move to the grid
Result: Navigation does not move to the grid the first time. After clicking the grid with the mouse it works subsequently.
Note: Behavior improved by considering enabled state when determining the initial column.
cWebTimer doesn't start outside views
Bug 7241, reported by Quality Assurance
cWebTimer does not start automatically when used outside of views even if pbAutoStart is set to True.
cWebList / cWebGrid: JavaScript error on WebSet pbEnabled before initialization
Bug 7230, reported by Quality Assurance
Doing a WebSet of pbEnabled on a cWebList/cWebGrid during OnLoad or a DDO event can result in:
df-min.js:1005 Uncaught TypeError: Cannot set property 'tabIndex' of undefined
at WebGrid.applyEnabled
This happens if the control is not yet rendered. To reproduce, add the attached view to WebOrder and open TestGridWebsetOnLoad.
Mobile Zoom Wizard generates 'Clear/Add' caption on button which should say 'Cancel Changes'
Bug 7222, reported by Quality Assurance
Mobile Zoom Wizard generates an action group menu item with the caption "Clear/Add" while it performs a RefreshRecord. It should be "Cancel Changes" as in WebOrderMobile.
OnCloseModalDialog not called
Bug 7218, reported by Quality Assurance
OnCloseModalDialog sometimes doesn't fire when opening a modal dialog. This happens when the modal queue contains a modal dialog (e.g. locking dialog or ShowYesNo) while the dialog is shown — psInvokingView was set wrong. Fixed by adjusting invocation handling.
DD Debug - Node IDs must be unique error
Bug 7197, reported by Hans van de Laar
Running web version of DD Debug on a view with diamond relations shows 'Node IDs must be unique'. This was due to a recursive issue where the same DD was added to the treeview multiple times.
To reproduce: add the attached view to WebOrder, include WebDD_Debug.wo in WebApp.src, run, select DoubleGridTest, press Ctrl+D.
cWebGrid: Row navigation issues inserting new rows in a manual grid
Bug 7194, reported by Marco Kuipers
In a cWebGrid with pbDataAware=False, pbOfflineEditing=False, and OnSaveRow not altering the rowid, tabbing after entering data may move the cursor to the first column of the same row instead of the next row.
To reproduce: add the attached view TestOfflineGridIssue to WebOrder and follow the steps.
cWebSlider doesn't trigger OnChange when pbRange is true
Bug 7178, reported by Leif Angestam
If pbRange is True then OnChange does not fire regardless of pbServerOnChange.
Example:
Object oWebSliderToFrom is a cWebSlider
Set piColumnSpan to 5
Set piColumnIndex to 1
Set piLabelOffset to 50
Set piMinValue to 1
Set piMaxValue to 24
Set pbRanged to True
Set piFrom to 8
Set piTo to 17
Set pbShowValue to True
Set pbServerOnChange to True
Procedure OnChange String sNewValue String sOldValue
Forward Send OnChange sNewValue sOldValue
String sFrom sTo
WebGet piFrom to sFrom
WebGet piTo to sTo
Send ShowInfoBox (SFormat("From: %1 To: %2", sFrom, sTo))
End_Procedure
End_Object
OnChange should fire for ranged sliders when appropriate.
showInfoBalloon / showControlError: After the balloon is hidden it still blocks clicks on controls behind itself
Bug 7176, reported by Quality Assurance
After an info or error balloon is hidden it may still block clicks on background controls. The destroy logic was adjusted.
File Upload: psAccept doesn't accept files with extra '.' in the name
Bug 7175, reported by Adriano Rodrigues
Setting psAccept to a file extension (e.g. .xml) didn't accept files with multiple . characters in their names (e.g. abc.123.xml). The accept logic was fixed to parse extensions properly.
cWebActionMenu: Adding menu items directly doesn't work as advertised in the DOC
Bug 7174, reported by Quality Assurance
Adding items directly to a cWebActionMenu doesn't display immediately — items only appear after switching to a view that has a cWebMenuGroup. To reproduce, add menu items in WebOrderMobile's oMainActions.
cWebList: Search on numeric column in a list with peDbGridType set to gtAllData doesn't work properly
Bug 7170, reported by Quality Assurance
Searching a numeric column in a non-data-aware WebList (peDbGridType = gtAllData) causes a JavaScript error and no search. To reproduce: open inventory prompt list in WebOrder, change sorting to 'On hand' and type a number.
cWebMenuButton: OnCloseModalDialog is not published
Bug 7167, reported by Raveen Ryan Sundram
Opening a dialog from a web menu button and closing produces: This web method 'OnCloseModalDialog' is not published by the target Object 'oButton'. This was caused by a missing Forward Send End_Construct_Object. Also affected OnFocus and OnBlur.
cWebCombo: WebSet of psValue doesn't always work from OnNavigateForward
Bug 7166, reported by Hans van de Laar
Refilling a combo in NavigateForward while it was filled during view load with other values causes psValue to not always be respected. If initial items do not include the specific value, psValue may be ignored.
Error balloon causes view NavigateForward to fail first time after cancel
Bug 7163, reported by Thomas Murphy
If a validation error displays an error balloon and the view is closed using cancel, the next NavigateForward to the view may fail the first time. This was due to a JavaScript error in the destroy function of the InfoBalloon executed during navigation.
To reproduce: add the attached main and child views to WebOrder, trigger validation error, cancel, then try to navigate forward again.
WebSetResponsive rules not applied on default view after NavigateBegin
Bug 7143, reported by Harm Wibier
Doing a NavigateBegin on the default view doesn't apply WebSetResponsive rules. Reproduce by adding a button that sends NavigateBegin to the dashboard; on mobile emulation the dashboard may render as desktop.
Example:
Object oWebButton1 is a cWebButton
Set piColumnSpan to 0
Set psCaption to "Home"
Procedure OnClick
Send NavigateBegin of oDashboard Self False
End_Procedure
End_Object
Unhandled error 999 on cWebSliders
Bug 7141, reported by Raveen Ryan Sundram
An unhandled error 999 can occur on cWebSlider under certain interactions. Example reproduction provided in WebOrderMobile sample.
cWebGroup: Nested groups invalidly display their caption element
Bug 7136, reported by Peter Bragg
Nesting a group with pbShowCaption=False inside a group with pbShowCaption=True still shows the inner caption element, causing rendering issues. Fixed CSS/DOM behavior.
Responsive scaling issue on iPhone when switching to landscape mode
Bug 7134, reported by Dave Robinson
Dashboard tiles on iPhone 6 become very wide when switching to landscape and stay that way. This happens when the app is added to the iPhone home screen.
cWebList: Multi line header on Internet Explorer with pbFillHeight can have rendering issues
Bug 7131, reported by Quality Assurance
A list with multiple header lines (pbNewLine) combined with pbFillHeight=True sometimes shows rendering issues in Internet Explorer 11. Repro sample provided.
cWebForm: Attempt to run uncompiled expression error with numeric fields on mobile
Bug 7117, reported by Ronaldo Nakamashi
Using cWebForm on mobile devices with peDataType=typeNumber can cause 'Attempt to run uncompiled expression...' errors when the value is empty and the field has focus when a server call is made. pbHTML5NumberOnMobile must be True. Repro includes two forms and tabbing interactions.
pbNewLine combined with cWebGrid
Bug 7114, reported by Roel Westhoff
Setting pbNewLine=True on columns within a cWebGrid causes the columns on the next line to become unselectable using the mouse. Example: set pbNewLine of oInvtUnit_Price in Order.wo.
WebTreeView may not show correct collapse/expand symbol for root item
Bug 7113, reported by Quality Assurance
A tree with only a single item at root level doesn't properly render the collapse/expand arrow (or plus/minus) for themes other than Df_Windows_Like. Repro sample provided. Note: CSS class for this special case wasn't included when converting to font-icons.
cWebGrid: Clicking an empty row while on the new row doesn't save and create a new row
Bug 7107, reported by Quality Assurance
When creating a new row, clicking empty rows below the grid should trigger a save and create another new row. It did in 18.0 but not in 18.2/19.0. Reproduce via Order view.
cWebGroup: Truncates with pbFillHeight and content large enough
Bug 7106, reported by Raveen Ryan Sundram
Using cWebGroup combined with pbFillHeight and content that fills the entire group causes clipping. Example provided for WebOrderMobile.
cWebGrid: Recursive clear with two grids on one DD
Bug 7104, reported by Quality Assurance
If two grids are attached to the same child DD, clearing the parent or selecting a parent with no children can cause an endless loop of finds and flickering UI. This was due to recursive server calls where grids change current row to 'new' and trigger clears.
cWebColumnButton objects do not include space between them
Bug 7103, reported by Quality Assurance
Multiple cWebColumnButton buttons display without spacing and appear as one band of color. Add whitespace between buttons to differentiate.
Example column:
Object oCustomerButtons is a cWebColumnButton
Set pbDynamic to True
Set psCaption to "Buttons"
Set piWidth to 80
Set pbFixedWidth to True
Set psCSSClass to "RowDetail"
Procedure OnDefineButtons
// Use AddButton to define a button (sID, sCaption, sCSSClass)
Send AddButton "E" "AllEt" ""
Send AddButton "X" "AllX" ""
Send AddButton "G" "AllG" ""
End_Procedure
End_Object
cWebTreeView: OnSelect triggers too often
Bug 7087, reported by Quality Assurance
Clicking an already selected item in the TreeView sometimes triggers OnSelect. OnSelect should only trigger when the selected item changes.
Mobile Zoom wizard generates classname that doesn't exist
Bug 6964, reported by Thomas Murphy
Mobile Zoom wizard generates a cancel menu item using a CSS class WebRefreshMenuItem that didn't exist. It now generates WebIcon_Refresh (added in 19.0).
Example generated code previously:
Object oCancelChangesBtn is a cWebMenuItem
Set psCSSClass to "WebRefreshMenuItem"
Set psCaption to "Clear/Add"
Set peActionDisplay to adMenu
Procedure OnClick
Send RefreshRecord
End_Procedure
End_Object
Character 007 causes Invalid JSON
Bug 6948, reported by Quality Assurance
If a database field contains invalid control characters (e.g. ASCII 7) and the record is displayed in a Web Framework application, it shows:
JSON.parse: bad control character in string literal at line 1 column ...
Example:
{ Published=True }
Function TestString Returns String
Function_Return ('"abc"' + Character(7) + "--")
End_Function
Add this function to a web-service and call it using JSON to reproduce. Control characters must be encoded when returned from the server.
OnSetCalculatedValue may stop cWebList data loading
Bug 6837, reported by Joao Mauricio Rinardo
If your code sets the FOUND indicator inside OnSetCalculatedValue the list will stop loading data.
To reproduce:
- Add the attached view to WebOrder
- Run WebOrder → ScrollTest
- Scroll to the bottom of the grid — it will stop at Number 80 instead of 100 when Found changes to 0.
cWebList: If you search for a date starting to type on the client, it displays the current date
Bug 6835, reported by Frank Valcarcel
When typing a date in a web lookup list, the search popup shows and the date is already filled in, so typed input is ignored until you select or delete the existing date. Sample view attached to WebOrder.
Current row of grid on webview goes off viewable area
Bug 6830, reported by Anders Ohrt
A cWebList can position rows off screen during keyboard navigation. Example and steps provided. Resizing the browser corrects the issue. Repro steps included.
Icon indicating sorting order in WebGrids and WebLists show the inverse order
Bug 6799, reported by Joao Mauricio Rinardo
The icon indicating a column's sort order shows the inverse order (ascending icon shown when list is descending and vice versa). Examples attached.