TIWCGJQEdit DataLink fires SetText

Posted:
09 Jun 2017 23:07
by paubc
Hi,
When TIWCGJQEdit component is linked to a field it assign the field value when showing it (kind of a circular action) firing Field.OnSetText immediatly after showing the field value. No matter if you set the control to be ReadOnly, Editable, NonEditableAsLabel, etc.
Why?
Am I doing something wrong?
I realize of this behaivor because I have a read-only float field showing a percent done value with DisplayFormat := '#0.00 %'. The user will not edit this value. I only want to show it but I can't because I get an error message like "50,50 % is not a valida floating point value". The same value is showing ok in a grid.
Any help?
Regards, Pau.
Re: TIWCGJQEdit DataLink fires SetText

Posted:
16 Jun 2017 10:56
by Alexander Bulei
Hi paubc,
Can you send us the simple testcase? TIA
Best Regards.
Re: TIWCGJQEdit DataLink fires SetText

Posted:
20 Jun 2017 15:48
by paubc
Hi,
I have been out of the office last week. Yesterday, when I put my hands again on this project everything worked as spected. Don't know what happend. It seems that from time to time something gets corrupted and strange behaivors arise. Next time I will shut down the system before wasting my time. Does this happen to anyone else?
Regards, Pau.
Re: TIWCGJQEdit DataLink fires SetText

Posted:
20 Jun 2017 18:50
by paubc
Hi,
Is happening again. Attached is a simple project that is not working on my machine.
I get this exception when the main form is showing on navigator:
---------------------------
Debugger Exception Notification
---------------------------
Project Test_DisplayFormat.exe raised exception class EDatabaseError with message ''75,45%' is not a valid floating point value for field 'PERCENT_DONE''.
---------------------------
Break Continue Help
---------------------------
I'm using DXE6, IW v14.1.6 and IWCG v3.0.0.115.
Regards, Pau.
Re: TIWCGJQEdit DataLink fires SetText

Posted:
21 Jun 2017 11:15
by Alexander Bulei
Hi paubc,
Project Test_DisplayFormat.exe raised exception class EDatabaseError with message ''75,45%' is not a valid floating point value for field 'PERCENT_DONE''.
You can't enter '%' char in edit field...If you want allow user enter that char, you need handle the Field.OnSetText event.
Best Regards.
Re: TIWCGJQEdit DataLink fires SetText

Posted:
21 Jun 2017 19:21
by paubc
Hi,
The "%" character comes from field's DisplayFormat property. I'm not entering it. The TIWCGJQEdit control should get field's Value instead of DisplayText.
Also, why the SetTextField is fired?
The TIWCGJQEdit control is ReadOnly.
Regards, Pablo.
Re: TIWCGJQEdit DataLink fires SetText

Posted:
23 Jun 2017 10:09
by Alexander Bulei
Hi paubc,
The "%" character comes from field's DisplayFormat property. I'm not entering it.
But works fine here in this way...
Can you make a small video from yours demo?
Best Regards.
Re: TIWCGJQEdit DataLink fires SetText

Posted:
26 Jun 2017 15:05
by paubc
Hi,
I will record a viedo soon. Meanwhile here you are error details:
Error details:
Exception message : '75,45%' is not a valid floating point value for field 'PERCENT_DONE'
Exception class : EDatabaseError
Exception address : 007E32CF
Exception Time : 2017-06-26 15:54:11.252
------------------------------------------------------------------------------------------------------------------------
Application Name : Test_DisplayFormat.exe
Application Version:
Started at : 2017-06-26 15:49:23.376
Running for : 4 minutes 47 seconds
Computer Name : PRB-DXE6
Compiler Version : 270
------------------------------------------------------------------------------------------------------------------------
IntraWeb Version : 14.1.6
Multi-session : False
Content Path : C:\IFS\bin\fw_exe\fw_exe_cs_iw\wwwroot\
Session count : 1
Application Path : C:\IFS\bin\fw_exe\fw_exe_cs_iw\
Active Form : [unassigned]
Active Form list :
Form list : [1] IWUserSession (TIWUserSession)
Browser Name : Firefox
Browser UserAgent : Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0
Session ID : zMvWBUwq8eYIzvNOJeMn~G
Last Access : 2017-06-26 15:54:11.126
Callback : False
Runtime parameters :
------------------------------------------------------------------------------------------------------------------------
Client IP address : 127.0.0.1
Request PathInfo : /$/
Request Method : GET
Request User Agent : Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0
Cookies Count : 1
------------------------------------------------------------------------------------------------------------------------
(003E22CA){Test_DisplayFormat.exe} [007E32CA] Data.DB.Db.DatabaseError$qqrx20System.UnicodeStringp25System.Classes.TComponent (Line 3245, "Data.DB.pas" + 10) + $E
(00026032){Test_DisplayFormat.exe} [00427032] System.SysUtils.Sysutils.Format$qqrx20System.UnicodeStringpx14System.TVarRecxirx31System.Sysutils.TFormatSettings (Line 12113, "System.SysUtils.pas" + 1) + $B
(00026017){Test_DisplayFormat.exe} [00427017] System.SysUtils.Sysutils.Format$qqrx20System.UnicodeStringpx14System.TVarRecxi (Line 12107, "System.SysUtils.pas" + 1) + $F
(003E2369){Test_DisplayFormat.exe} [007E3369] Data.DB.Db.DatabaseErrorFmt$qqrx20System.UnicodeStringpx14System.TVarRecxip25System.Classes.TComponent (Line 3251, "Data.DB.pas" + 1) + $15
(003EA564){Test_DisplayFormat.exe} [007EB564] Data.DB.Db.TFloatField.SetAsString$qqrx20System.UnicodeString (Line 6965, "Data.DB.pas" + 4) + $37
(00171A26){Test_DisplayFormat.exe} [00572A26] Vcl.Controls.TControl.GetTextBuf$qqrpbi (Line 6065, "Vcl.Controls.pas" + 0) + $6
(0059B1AE){Test_DisplayFormat.exe} [0099C1AE] IWCGJQEdit.TIWCGJQCustomEdit.CheckCharCase$qqrx20System.UnicodeString (Line 749, "IWCGJQEdit.pas" + 5) + $6
(003E732A){Test_DisplayFormat.exe} [007E832A] Data.DB.Db.TField.SetText$qqrx20System.UnicodeString (Line 5707, "Data.DB.pas" + 0) + $2
(003E6FB5){Test_DisplayFormat.exe} [007E7FB5] Data.DB.Db.TField.SetEditText$qqrx20System.UnicodeString (Line 5574, "Data.DB.pas" + 1) + $20
(00569345){Test_DisplayFormat.exe} [0096A345] IWCGJQCommon.TIWCGFieldDataLink.SetFieldText$qqrx20System.UnicodeString (Line 9460, "IWCGJQCommon.pas" + 7) + $9
(0059B991){Test_DisplayFormat.exe} [0099C991] IWCGJQEdit.TIWCGJQCustomEdit.DataLinkUpdateData$qqrv (Line 887, "IWCGJQEdit.pas" + 5) + $18
(005694BF){Test_DisplayFormat.exe} [0096A4BF] IWCGJQCommon.TIWCGFieldDataLink.UpdateData$qqrv (Line 9496, "IWCGJQCommon.pas" + 2) + $10
(003F1EFD){Test_DisplayFormat.exe} [007F2EFD] Data.DB.Db.TDataLink.UpdateRecord$qqrv (Line 10402, "Data.DB.pas" + 3) + $5
(003F2095){Test_DisplayFormat.exe} [007F3095] Data.DB.Db.TDataLink.DataEvent$qqr18Data.Db.TDataEventi (Line 10478, "Data.DB.pas" + 25) + $2
(0056904C){Test_DisplayFormat.exe} [0096A04C] IWCGJQCommon.TIWCGFieldDataLink.DataEvent$qqr18Data.Db.TDataEventi (Line 9387, "IWCGJQCommon.pas" + 3) + $9
(003F260B){Test_DisplayFormat.exe} [007F360B] Data.DB.Db.TDataSource.NotifyLinkTypes$qqr18Data.Db.TDataEventio (Line 10743, "Data.DB.pas" + 3) + $13
(003F2631){Test_DisplayFormat.exe} [007F3631] Data.DB.Db.TDataSource.NotifyDataLinks$qqr18Data.Db.TDataEventi (Line 10749, "Data.DB.pas" + 2) + $8
(003F266B){Test_DisplayFormat.exe} [007F366B] Data.DB.Db.TDataSource.DataEvent$qqr18Data.Db.TDataEventi (Line 10758, "Data.DB.pas" + 4) + $6
(003F9980){Test_DisplayFormat.exe} [007FA980] Data.DB.Db.TDataSet.DataEvent$qqr18Data.Db.TDataEventi (Line 13669, "Data.DB.pas" + 46) + $14
(00460B28){Test_DisplayFormat.exe} [00861B28] Datasnap.DBClient.Dbclient.TCustomClientDataSet.DataEvent$qqr18Data.Db.TDataEventi (Line 1904, "Datasnap.DBClient.pas" + 10) + $6
(003F9A72){Test_DisplayFormat.exe} [007FAA72] Data.DB.Db.TDataSet.UpdateRecord$qqrv (Line 13705, "Data.DB.pas" + 2) + $8
(003FAA66){Test_DisplayFormat.exe} [007FBA66] Data.DB.Db.TDataSet.Post$qqrv (Line 14407, "Data.DB.pas" + 1) + $2
(004643D9){Test_DisplayFormat.exe} [008653D9] Datasnap.DBClient.Dbclient.TCustomClientDataSet.Post$qqrv (Line 3318, "Datasnap.DBClient.pas" + 10) + $2
(005ACAEB){Test_DisplayFormat.exe} [009ADAEB] IWFTest_DisplayFormat.TIWFRMTest_DisplayFormat.DoCDS$qqrv (Line 73, "IWFTest_DisplayFormat.pas" + 6) + $B
(005ACBBB){Test_DisplayFormat.exe} [009ADBBB] IWFTest_DisplayFormat.TIWFRMTest_DisplayFormat.IWAppFormCreate$qqrp14System.TObject (Line 78, "IWFTest_DisplayFormat.pas" + 1) + $3
(0030FB18){Test_DisplayFormat.exe} [00710B18] IWBaseForm.TIWBaseForm.DoCreate$qqrv (Line 290, "IWBaseForm.pas" + 3) + $8
(0030F8FA){Test_DisplayFormat.exe} [007108FA] IWBaseForm.TIWBaseForm.$bctr$qqrp25System.Classes.TComponent (Line 224, "IWBaseForm.pas" + 25) + $3
(00007017){Test_DisplayFormat.exe} [00408017] System.TObject.NewInstance$qqrv (Line 15578, "System.pas" + 1) + $10
(002E6D0E){Test_DisplayFormat.exe} [006E7D0E] IWForm.TIWForm.$bctr$qqrp25System.Classes.TComponent (Line 232, "IWForm.pas" + 1) + $4
(0038ED9B){Test_DisplayFormat.exe} [0078FD9B] IWServerSession.TIWServerSession.StartForm$qqrv (Line 444, "IWServerSession.pas" + 15) + $C
(00390C59){Test_DisplayFormat.exe} [00791C59] IWServerSession.TIWServerSession.ExecuteForm$qqrv (Line 816, "IWServerSession.pas" + 3) + $2
(00390526){Test_DisplayFormat.exe} [00791526] IWServerSession.TIWServerSession.DoExecuteSession$qqrx20System.UnicodeStringo (Line 709, "IWServerSession.pas" + 40) + $3
(00390A73){Test_DisplayFormat.exe} [00791A73] IWServerSession.TIWServerSession.ExecuteSession$qqrx20System.UnicodeString (Line 794, "IWServerSession.pas" + 51) + $8
(0037F3FC){Test_DisplayFormat.exe} [007803FC] IWServer.TIWServer.ExecuteUrl$qqrx20System.UnicodeString (Line 485, "IWServer.pas" + 63) + $8
(0037F90C){Test_DisplayFormat.exe} [0078090C] IWServer.TIWServer.Execute$qqrv (Line 554, "IWServer.pas" + 11) + $11
(0038CF3B){Test_DisplayFormat.exe} [0078DF3B] IWServerSession.HttpExecute$qqrpuci (Line 88, "IWServerSession.pas" + 2) + $3
(003ACFBD){Test_DisplayFormat.exe} [007ADFBD] IW.Server.HTTPIndy.Server.Httpindy.THTTPServerIndy.DoCommandGet$qqrp20Incontext.TInContextp37Incustomhttpserver.TInHTTPRequestInfop38Incustomhttpserver.TInHTTPResponseInfo (Line 224, "IW.Server.HTTPIndy.pas" + 26) + $15
(00379AF4){Test_DisplayFormat.exe} [0077AAF4] InCustomHTTPServer.TInCustomHTTPServer.DoExecute$qqrp20Incontext.TInContext (Line 1426, "InCustomHTTPServer.pas" + 180) + $F
(0034F633){Test_DisplayFormat.exe} [00750633] InContext.TInContext.Run$qqrv (Line 185, "InContext.pas" + 2) + $7
(0034E1CE){Test_DisplayFormat.exe} [0074F1CE] InTask.TInTask.DoRun$qqrv (Line 136, "InTask.pas" + 0) + $2
(00365E4E){Test_DisplayFormat.exe} [00766E4E] InThread.TInThreadWithTask.Run$qqrv (Line 625, "InThread.pas" + 1) + $3
(003657F9){Test_DisplayFormat.exe} [007667F9] InThread.TInThread.Execute$qqrv (Line 377, "InThread.pas" + 43) + $5
(000CF90D){Test_DisplayFormat.exe} [004D090D] System.Classes.ThreadProc$qqrxp22System.Classes.TThread (Line 14601, "System.Classes.pas" + 21) + $5
(00008D50){Test_DisplayFormat.exe} [00409D50] System.ThreadWrapper$qqspv (Line 23704, "System.pas" + 45) + $0
Regards.
Re: TIWCGJQEdit DataLink fires SetText

Posted:
26 Jun 2017 15:57
by paubc
Hi,
Attached is a video showing the error.
Regards.
Re: TIWCGJQEdit DataLink fires SetText

Posted:
27 Jun 2017 09:23
by Alexander Bulei
Hi paubc,
What is your version of cgdevtools?
Best Regards.