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

View File

@ -97,6 +97,16 @@ begin
State:=GetFieldCheckState;
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);
var
NewFieldText: string;
@ -140,16 +150,6 @@ begin
DataChange(Self);
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);
begin
Message.Result := PtrUInt(FDataLink);