lcl: update record in DoOnChange instead of EditingDone. Fixes #19167

git-svn-id: trunk@30347 -
This commit is contained in:
blikblum 2011-04-17 12:47:32 +00:00
parent a42083fe74
commit a494e8fc10
2 changed files with 11 additions and 11 deletions

View File

@ -597,6 +597,7 @@ Type
protected protected
function GetFieldCheckState: TCheckBoxState; virtual; function GetFieldCheckState: TCheckBoxState; virtual;
procedure DataChange(Sender: TObject); virtual; procedure DataChange(Sender: TObject); virtual;
procedure DoOnChange; override;
procedure UpdateData(Sender: TObject); virtual; procedure UpdateData(Sender: TObject); virtual;
procedure FocusRequest(Sender: TObject); virtual; procedure FocusRequest(Sender: TObject); virtual;
procedure Notification(AComponent: TComponent; procedure Notification(AComponent: TComponent;
@ -605,7 +606,6 @@ Type
public public
constructor Create(TheOwner: TComponent); override; constructor Create(TheOwner: TComponent); override;
destructor Destroy; override; destructor Destroy; override;
procedure EditingDone; override;
property Checked; property Checked;
property Field: TField read GetField; property Field: TField read GetField;
property State; property State;

View File

@ -97,6 +97,16 @@ begin
State:=GetFieldCheckState; State:=GetFieldCheckState;
end; end;
procedure TDBCheckBox.DoOnChange;
begin
if FDatalink.Edit then begin
FDatalink.Modified;
FDataLink.UpdateRecord;
end else
State:=GetFieldCheckState;
inherited DoOnChange;
end;
procedure TDBCheckBox.UpdateData(Sender: TObject); procedure TDBCheckBox.UpdateData(Sender: TObject);
var var
NewFieldText: string; NewFieldText: string;
@ -140,16 +150,6 @@ begin
DataChange(Self); DataChange(Self);
end; end;
procedure TDBCheckBox.EditingDone;
begin
if FDatalink.Edit then begin
FDatalink.Modified;
FDataLink.UpdateRecord;
end else
State:=GetFieldCheckState;
inherited EditingDone;
end;
procedure TDBCheckBox.CMGetDataLink(var Message: TLMessage); procedure TDBCheckBox.CMGetDataLink(var Message: TLMessage);
begin begin
Message.Result := PtrUInt(FDataLink); Message.Result := PtrUInt(FDataLink);