LCL: call OnEditingDone (DoEditingDone) only if something changed

git-svn-id: trunk@58337 -
This commit is contained in:
ondrej 2018-06-19 17:11:31 +00:00
parent 452ea18e69
commit f1b3d3f742
12 changed files with 45 additions and 35 deletions

View File

@ -288,6 +288,7 @@ type
procedure ConfirmChanges; virtual; procedure ConfirmChanges; virtual;
procedure UndoChanges; virtual; procedure UndoChanges; virtual;
procedure DoEditingDone; override;
function GetCheckBoxRect(IgnoreRightToLeft: Boolean = False): TRect; function GetCheckBoxRect(IgnoreRightToLeft: Boolean = False): TRect;
function GetDateTimePartFromTextPart(TextPart: TTextPart): TDateTimePart; function GetDateTimePartFromTextPart(TextPart: TTextPart): TDateTimePart;
function GetSelectedDateTimePart: TDateTimePart; function GetSelectedDateTimePart: TDateTimePart;
@ -427,8 +428,6 @@ type
procedure RemoveAllHandlersOfObject(AnObject: TObject); override; procedure RemoveAllHandlersOfObject(AnObject: TObject); override;
procedure Paint; override; procedure Paint; override;
procedure EditingDone; override;
published published
// //
end; end;
@ -3163,12 +3162,12 @@ begin
inherited Paint; inherited Paint;
end; end;
procedure TCustomDateTimePicker.EditingDone; procedure TCustomDateTimePicker.DoEditingDone;
begin begin
if FNoEditingDone <= 0 then begin if FNoEditingDone <= 0 then begin
ConfirmChanges; ConfirmChanges;
inherited EditingDone; inherited DoEditingDone;
end; end;
end; end;

View File

@ -949,7 +949,8 @@ type
cfProcessingWMPaint, cfProcessingWMPaint,
cfKillChangeBounds, cfKillChangeBounds,
cfKillInvalidatePreferredSize, cfKillInvalidatePreferredSize,
cfKillAdjustSize cfKillAdjustSize,
cfEditingDoneChanged
); );
TControlFlags = set of TControlFlag; TControlFlags = set of TControlFlag;
@ -1407,6 +1408,7 @@ type
procedure MouseLeave; virtual; procedure MouseLeave; virtual;
function DialogChar(var Message: TLMKey): boolean; virtual; function DialogChar(var Message: TLMKey): boolean; virtual;
procedure UpdateMouseCursor(X, Y: integer); procedure UpdateMouseCursor(X, Y: integer);
procedure DoEditingDone; virtual;
protected protected
procedure Changed; procedure Changed;
function GetPalette: HPalette; virtual; function GetPalette: HPalette; virtual;
@ -1607,7 +1609,7 @@ type
constructor Create(TheOwner: TComponent);override; constructor Create(TheOwner: TComponent);override;
destructor Destroy; override; destructor Destroy; override;
procedure BeforeDestruction; override; procedure BeforeDestruction; override;
procedure EditingDone; virtual; procedure EditingDone;
procedure ExecuteDefaultAction; virtual; procedure ExecuteDefaultAction; virtual;
procedure ExecuteCancelAction; virtual; procedure ExecuteCancelAction; virtual;
procedure BeginDrag(Immediate: Boolean; Threshold: Integer = -1); procedure BeginDrag(Immediate: Boolean; Threshold: Integer = -1);

View File

@ -379,8 +379,7 @@ Type
procedure DataChange(Sender: TObject); override; procedure DataChange(Sender: TObject); override;
procedure DoSelectionChange(User: Boolean); override; procedure DoSelectionChange(User: Boolean); override;
procedure UpdateData(Sender: TObject); override; procedure UpdateData(Sender: TObject); override;
public procedure DoEditingDone; override;
procedure EditingDone; override;
published published
property Align; property Align;
property Anchors; property Anchors;
@ -565,10 +564,10 @@ Type
property DataLink: TFieldDataLink read FDataLink; property DataLink: TFieldDataLink read FDataLink;
function GetButtonValue(Index: Integer): string; function GetButtonValue(Index: Integer): string;
procedure UpdateRadioButtonStates; override; procedure UpdateRadioButtonStates; override;
procedure DoEditingDone; override;
public public
constructor Create(TheOwner: TComponent); override; constructor Create(TheOwner: TComponent); override;
destructor Destroy; override; destructor Destroy; override;
procedure EditingDone; override;
function ExecuteAction(AAction: TBasicAction): Boolean; override; function ExecuteAction(AAction: TBasicAction): Boolean; override;
function UpdateAction(AAction: TBasicAction): Boolean; override; function UpdateAction(AAction: TBasicAction): Boolean; override;
property Field: TField read GetField; property Field: TField read GetField;
@ -729,12 +728,12 @@ Type
procedure Change; override; procedure Change; override;
procedure UpdateData(Sender: TObject); virtual; abstract; procedure UpdateData(Sender: TObject); virtual; abstract;
procedure WndProc(var Message: TLMessage); override; procedure WndProc(var Message: TLMessage); override;
procedure DoEditingDone; override;
public public
constructor Create(TheOwner: TComponent); override; constructor Create(TheOwner: TComponent); override;
destructor Destroy; override; destructor Destroy; override;
function ExecuteAction(AAction: TBasicAction): Boolean; override; function ExecuteAction(AAction: TBasicAction): Boolean; override;
function UpdateAction(AAction: TBasicAction): Boolean; override; function UpdateAction(AAction: TBasicAction): Boolean; override;
procedure EditingDone; override;
property Field: TField read GetField; property Field: TField read GetField;
property Text; property Text;
property ItemIndex; property ItemIndex;
@ -961,10 +960,10 @@ Type
procedure KeyPress(var Key:Char); override; procedure KeyPress(var Key:Char); override;
procedure WndProc(var Message : TLMessage); override; procedure WndProc(var Message : TLMessage); override;
class procedure WSRegisterClass; override; class procedure WSRegisterClass; override;
procedure DoEditingDone; override;
public public
constructor Create(TheOwner: TComponent); override; constructor Create(TheOwner: TComponent); override;
destructor Destroy; override; destructor Destroy; override;
procedure EditingDone; override;
procedure LoadMemo; virtual; procedure LoadMemo; virtual;
function ExecuteAction(AAction: TBasicAction): Boolean; override; function ExecuteAction(AAction: TBasicAction): Boolean; override;
function UpdateAction(AAction: TBasicAction): Boolean; override; function UpdateAction(AAction: TBasicAction): Boolean; override;
@ -1207,12 +1206,12 @@ Type
procedure SetDataSource(Value: TDataSource); procedure SetDataSource(Value: TDataSource);
procedure UpdateDate(const AValue: string); procedure UpdateDate(const AValue: string);
procedure CMGetDataLink(var Message: TLMessage); message CM_GETDATALINK; procedure CMGetDataLink(var Message: TLMessage); message CM_GETDATALINK;
procedure DoEditingDone; override;
protected protected
procedure Notification(AComponent: TComponent; Operation: TOperation); override; procedure Notification(AComponent: TComponent; Operation: TOperation); override;
public public
constructor Create(TheOwner: TComponent); override; constructor Create(TheOwner: TComponent); override;
destructor Destroy; override; destructor Destroy; override;
procedure EditingDone; override;
function ExecuteAction(AAction: TBasicAction): Boolean; override; function ExecuteAction(AAction: TBasicAction): Boolean; override;
function UpdateAction(AAction: TBasicAction): Boolean; override; function UpdateAction(AAction: TBasicAction): Boolean; override;

View File

@ -244,9 +244,9 @@ type
procedure msg_SelectAll(var Msg: TGridMessage); message GM_SELECTALL; procedure msg_SelectAll(var Msg: TGridMessage); message GM_SELECTALL;
procedure msg_SetPos(var Msg: TGridMessage); message GM_SETPOS; procedure msg_SetPos(var Msg: TGridMessage); message GM_SETPOS;
procedure msg_GetGrid(var Msg: TGridMessage); message GM_GETGRID; procedure msg_GetGrid(var Msg: TGridMessage); message GM_GETGRID;
procedure DoEditingDone; override;
public public
constructor Create(Aowner : TComponent); override; constructor Create(Aowner : TComponent); override;
procedure EditingDone; override;
property EditText; property EditText;
property OnEditingDone; property OnEditingDone;
end; end;
@ -286,8 +286,8 @@ type
procedure msg_SetValue(var Msg: TGridMessage); message GM_SETVALUE; procedure msg_SetValue(var Msg: TGridMessage); message GM_SETVALUE;
procedure msg_SetPos(var Msg: TGridMessage); message GM_SETPOS; procedure msg_SetPos(var Msg: TGridMessage); message GM_SETPOS;
procedure msg_GetGrid(var Msg: TGridMessage); message GM_GETGRID; procedure msg_GetGrid(var Msg: TGridMessage); message GM_GETGRID;
procedure DoEditingDone; override;
public public
procedure EditingDone; override;
property BorderStyle; property BorderStyle;
property OnEditingDone; property OnEditingDone;
end; end;
@ -971,6 +971,7 @@ type
function DoCompareCells(Acol,ARow,Bcol,BRow: Integer): Integer; virtual; function DoCompareCells(Acol,ARow,Bcol,BRow: Integer): Integer; virtual;
procedure DoCopyToClipboard; virtual; procedure DoCopyToClipboard; virtual;
procedure DoCutToClipboard; virtual; procedure DoCutToClipboard; virtual;
procedure DoEditingDone; override;
procedure DoEditButtonClick(const ACol,ARow: Integer); virtual; procedure DoEditButtonClick(const ACol,ARow: Integer); virtual;
procedure DoEditorHide; virtual; procedure DoEditorHide; virtual;
procedure DoEditorShow; virtual; procedure DoEditorShow; virtual;
@ -1258,7 +1259,6 @@ type
constructor Create(AOwner: TComponent); override; constructor Create(AOwner: TComponent); override;
destructor Destroy; override; destructor Destroy; override;
procedure Invalidate; override; procedure Invalidate; override;
procedure EditingDone; override;
{ Exposed procs } { Exposed procs }
procedure AdjustInnerCellRect(var ARect: TRect); procedure AdjustInnerCellRect(var ARect: TRect);
@ -8146,10 +8146,10 @@ begin
end; end;
end; end;
procedure TCustomGrid.EditingDone; procedure TCustomGrid.DoEditingDone;
begin begin
if not FEditorShowing then if not FEditorShowing then
inherited EditingDone; inherited DoEditingDone;
end; end;
function TCustomGrid.EditorGetValue(validate:boolean=false): boolean; function TCustomGrid.EditorGetValue(validate:boolean=false): boolean;
@ -10083,9 +10083,9 @@ begin
{$IfDef DbgGrid} DebugLn('TStringCellEditor.Change END');{$ENDIF} {$IfDef DbgGrid} DebugLn('TStringCellEditor.Change END');{$ENDIF}
end; end;
procedure TStringCellEditor.EditingDone; procedure TStringCellEditor.DoEditingDone;
begin begin
inherited EditingDone; inherited DoEditingDone;
if FGrid<>nil then if FGrid<>nil then
FGrid.EditingDone; FGrid.EditingDone;
end; end;
@ -12834,10 +12834,10 @@ begin
{$Endif} {$Endif}
end; end;
procedure TPickListCellEditor.EditingDone; procedure TPickListCellEditor.DoEditingDone;
begin begin
{$ifdef dbgGrid}DebugLn('TPickListCellEditor.EditingDone INIT');{$ENDIF} {$ifdef dbgGrid}DebugLn('TPickListCellEditor.EditingDone INIT');{$ENDIF}
inherited EditingDone; inherited DoEditingDone;
if FGrid<>nil then if FGrid<>nil then
FGrid.EditingDone; FGrid.EditingDone;
{$ifdef dbgGrid}DebugLn('TPickListCellEditor.EditingDone END');{$ENDIF} {$ifdef dbgGrid}DebugLn('TPickListCellEditor.EditingDone END');{$ENDIF}

View File

@ -576,7 +576,11 @@ end;
------------------------------------------------------------------------------} ------------------------------------------------------------------------------}
procedure TControl.EditingDone; procedure TControl.EditingDone;
begin begin
if Assigned(OnEditingDone) then OnEditingDone(Self); if cfEditingDoneChanged in FControlFlags then
begin
DoEditingDone;
Exclude(FControlFlags, cfEditingDoneChanged);
end;
end; end;
procedure TControl.FontChanged(Sender: TObject); procedure TControl.FontChanged(Sender: TObject);
@ -1741,6 +1745,11 @@ begin
end; end;
end; end;
procedure TControl.DoEditingDone;
begin
if Assigned(OnEditingDone) then OnEditingDone(Self);
end;
{------------------------------------------------------------------------------ {------------------------------------------------------------------------------
TControl.DragOver TControl.DragOver
------------------------------------------------------------------------------} ------------------------------------------------------------------------------}
@ -5879,6 +5888,7 @@ end;
procedure TControl.CMChanged(var Message: TLMessage); procedure TControl.CMChanged(var Message: TLMessage);
begin begin
Include(FControlFlags, cfEditingDoneChanged);
if FParent<>nil then if FParent<>nil then
FParent.WindowProc(Message); FParent.WindowProc(Message);
end; end;

View File

@ -81,10 +81,10 @@ begin
end; end;
end; end;
procedure TCustomDBComboBox.EditingDone; procedure TCustomDBComboBox.DoEditingDone;
begin begin
FDataLink.UpdateRecord; FDataLink.UpdateRecord;
inherited EditingDone; inherited DoEditingDone;
end; end;
procedure TCustomDBComboBox.WndProc(var Message: TLMessage); procedure TCustomDBComboBox.WndProc(var Message: TLMessage);

View File

@ -671,10 +671,10 @@ begin
inherited DoExit; inherited DoExit;
end; end;
procedure TCustomEdit.EditingDone; procedure TCustomEdit.DoEditingDone;
begin begin
if not ReadOnly then if not ReadOnly then
inherited EditingDone; inherited DoEditingDone;
end; end;
procedure TCustomEdit.FontChanged(Sender: TObject); procedure TCustomEdit.FontChanged(Sender: TObject);

View File

@ -96,10 +96,10 @@ begin
end; end;
end; end;
procedure TDBCalendar.EditingDone; procedure TDBCalendar.DoEditingDone;
begin begin
FDataLink.UpdateRecord; FDataLink.UpdateRecord;
inherited EditingDone; inherited DoEditingDone;
end; end;
function TDBCalendar.ExecuteAction(AAction: TBasicAction): Boolean; function TDBCalendar.ExecuteAction(AAction: TBasicAction): Boolean;

View File

@ -54,9 +54,9 @@ begin
FDataLink.Field.Text := Items[ItemIndex]; FDataLink.Field.Text := Items[ItemIndex];
end; end;
procedure TDBListBox.EditingDone; procedure TDBListBox.DoEditingDone;
begin begin
FDataLink.UpdateRecord; FDataLink.UpdateRecord;
inherited EditingDone; inherited DoEditingDone;
end; end;

View File

@ -119,11 +119,11 @@ begin
FDataLink.OnUpdateData:=@UpdateData; FDataLink.OnUpdateData:=@UpdateData;
end; end;
procedure TDBMemo.EditingDone; procedure TDBMemo.DoEditingDone;
begin begin
if FDataLink.CanModify and FDatalink.Editing then begin if FDataLink.CanModify and FDatalink.Editing then begin
FDataLink.UpdateRecord; FDataLink.UpdateRecord;
inherited EditingDone; inherited DoEditingDone;
end else end else
FDatalink.Reset; FDatalink.Reset;
end; end;

View File

@ -154,10 +154,10 @@ begin
end; end;
end; end;
procedure TDBRadioGroup.EditingDone; procedure TDBRadioGroup.DoEditingDone;
begin begin
FDataLink.UpdateRecord; FDataLink.UpdateRecord;
inherited EditingDone; inherited DoEditingDone;
end; end;
function TDBRadioGroup.ExecuteAction(AAction: TBasicAction): Boolean; function TDBRadioGroup.ExecuteAction(AAction: TBasicAction): Boolean;

View File

@ -768,7 +768,7 @@ type
procedure Change; virtual; procedure Change; virtual;
procedure DoEnter; override; procedure DoEnter; override;
procedure DoExit; override; procedure DoExit; override;
procedure EditingDone; override; procedure DoEditingDone; override;
function GetCaretPos: TPoint; virtual; function GetCaretPos: TPoint; virtual;
function GetNumbersOnly: Boolean; virtual; function GetNumbersOnly: Boolean; virtual;
function GetReadOnly: Boolean; virtual; function GetReadOnly: Boolean; virtual;