Project JEDI - Issue Tracker - JEDI VCL
Viewing Issue Advanced Details
6648 00 JVCL Components major always 2018-08-22 09:56 2019-05-12 17:10
TheBlackfish  
 
normal  
feedback  
open  
none    
none  
0006648: TJvDateEdit CheckOnExit gives double error message
When you have 2 TJvDateEdit components on a form, the CheckOnExit displays the error message twice when you click on the other TJvDateEdit.

Example:
- Put 2 TJvDateEdit components on a form (JvDateEditA and JvDateEditB)
- JvDateEditA has CheckOnEdix set to true
- Enter an invalid date like 54.98.2465 in JvDateEditA
- Click on JvDateEditB
- Get 2x error message '54.98.2465 is not a valid date.'

This only happens when you CLICK on JvDateEditB. If you use the TAB KEY to switch to JvDateEditB then you get the error messsage only once.
We use JEDI Visual Component Library 3.50
zip file icon JvDateEditTestProject.zip [^] (4,992 bytes) 2018-09-19 07:41
Issue History
2018-08-22 09:56 TheBlackfish New Issue
2018-08-30 14:15 obones Note Added: 0021573
2018-08-30 14:15 obones Status new => feedback
2018-09-19 07:41 TheBlackfish File Added: JvDateEditTestProject.zip
2018-09-19 07:42 TheBlackfish Note Added: 0021576
2019-05-12 17:10 mh Note Added: 0021829

Notes
(0021573)
obones   
2018-08-30 14:15   
Please provide the zipped sources of an application showing this.
(0021576)
TheBlackfish   
2018-09-19 07:42   
I have attached a very simple example that shows the problem as explained.
(0021829)
mh   
2019-05-12 17:10   
Some first analysis:

1. the provided test application doesn't work out of the box. The dpr needs to be modified like this, otherwise no form will be created:

program JvDateEditTestProject;

uses
  Vcl.Forms,
  JvDateEditTest in 'JvDateEditTest.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

2. There is a method CMExit in TJvCustomComboEdit which is triggered by a message CM_EXIT. It looks like this method is being triggered twice and there is the FInCMExit field which seems to be there to prevent double calls. Looks like the CM_EXIT message is not declared as completely processed. But why then doesn't this happen when using the keyboard instead of the mouse? There it only triggers this once.