Another approach for updating wrong field/record because dataset scrolling

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3051 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
jujibo
2014-05-16 08:38:55 +00:00
parent 47d624ab46
commit 69b84feae4

View File

@ -36,8 +36,8 @@ type
Field: TField;
updated: boolean;
fMaxLength: integer;
oldValue: String;
EditingFieldName: String;
EditingFieldNo: LongInt;
EditingRecNo: LongInt;
procedure myEditEnter(Sender: TObject);
procedure myEditOnEditingDone(Sender: TObject);
procedure OnKeyPress(Sender: TObject; var key: char);
@ -59,8 +59,8 @@ type
updated: boolean;
theValue: TDateTime;
fFormat: string;
oldValue: TDateTime;
EditingFieldName: String;
EditingFieldNo: LongInt;
EditingRecNo: LongInt;
function getFormat: string;
function EditText: string;
procedure myEditEnter(Sender: TObject);
@ -91,8 +91,8 @@ type
updated: boolean;
theValue: TTime;
fFormat: string;
oldValue: TTime;
EditingFieldName: String;
EditingFieldNo: LongInt;
EditingRecNo: LongInt;
function getFormat: string;
procedure myEditEnter(Sender: TObject);
procedure myEditOnEditingDone(Sender: TObject);
@ -119,8 +119,8 @@ type
updated: boolean;
theValue: TDateTime;
fFormat: string;
oldValue: TDateTime;
EditingFieldName: String;
EditingFieldNo: LongInt;
EditingRecNo: LongInt;
function getFormat: string;
procedure myEditEnter(Sender: TObject);
procedure myEditOnEditingDone(Sender: TObject);
@ -149,8 +149,8 @@ type
theValue: integer;
updated: boolean;
Field: TField;
oldValue: integer;
EditingFieldName: String;
EditingFieldNo: LongInt;
EditingRecNo: LongInt;
procedure myEditOnEnter(Sender: TObject);
procedure OnKeyPress(Sender: TObject; var key: char);
procedure OnKeyDown(Sender: TObject; var Key: word; Shift: TShiftState);
@ -174,8 +174,8 @@ type
theValue: double;
fDecimals: integer;
fEFormat: string;
oldValue: double;
EditingFieldName: String;
EditingFieldNo: LongInt;
EditingRecNo: LongInt;
function getDecimals: integer;
procedure myEditOnEnter(Sender: TObject);
procedure myEditOnEditingDone(Sender: TObject);
@ -215,15 +215,15 @@ begin
CellEditor.MaxLength := fMaxLength;
updated := False;
CellEditor.SelectAll;
oldValue:= Field.AsString;
EditingFieldName:= Field.FieldName;
EditingFieldNo:= Field.FieldNo;
EditingRecNo:= Field.DataSet.RecNo;
end;
procedure TJDbGridStringCtrl.myEditOnEditingDone(Sender: TObject);
begin
if not Assigned(Field) or not Assigned(Field.Dataset) or not Field.DataSet.Active then
exit;
if (oldValue <> Field.AsString) or (EditingFieldName <> Field.FieldName) then
if (EditingRecNo <> Field.DataSet.RecNo) or (EditingFieldNo <> Field.FieldNo) then
exit; // avoid update wrong record/field because dataset scrolling
if (not updated) then
begin
@ -323,16 +323,16 @@ begin
CellEditor.OnKeyDown := @OnKeyDown;
theValue := Field.AsDateTime;
updated := False;
oldValue:= Field.AsDateTime;
EditingFieldName:= Field.FieldName;
CellEditor.SelectAll;
EditingFieldNo:= Field.FieldNo;
EditingRecNo:= Field.DataSet.RecNo;
end;
procedure TJDbGridDateTimeCtrl.myEditOnEditingDone(Sender: TObject);
begin
if not Assigned(Field) or not Assigned(Field.Dataset) or not Field.DataSet.Active then
exit;
if (oldValue <> Field.AsDateTime) or (EditingFieldName <> Field.FieldName) then
if (EditingRecNo <> Field.DataSet.RecNo) or (EditingFieldNo <> Field.FieldNo) then
exit; // avoid update wrong record/field because dataset scrolling
if Length(CellEditor.Caption) = 0 then
begin
@ -556,16 +556,16 @@ begin
CellEditor.OnKeyDown := @OnKeyDown;
theValue := Field.AsDateTime;
updated := False;
oldValue:= Field.AsDateTime;
EditingFieldName:= Field.FieldName;
CellEditor.SelectAll;
EditingFieldNo:= Field.FieldNo;
EditingRecNo:= Field.DataSet.RecNo;
end;
procedure TJDbGridTimeCtrl.myEditOnEditingDone(Sender: TObject);
begin
if not Assigned(Field) or not Assigned(Field.Dataset) or not Field.DataSet.Active then
exit;
if (oldValue <> Field.AsDateTime) or (EditingFieldName <> Field.FieldName) then
if (EditingRecNo <> Field.DataSet.RecNo) or (EditingFieldNo <> Field.FieldNo) then
exit; // avoid update wrong record/field because dataset scrolling
if Length(CellEditor.Caption) = 0 then
begin
@ -750,16 +750,16 @@ begin
CellEditor.OnKeyDown := @OnKeyDown;
theValue := Field.AsDateTime;
updated := False;
oldValue:= Field.AsDateTime;
EditingFieldName:= Field.FieldName;
CellEditor.SelectAll;
EditingFieldNo:= Field.FieldNo;
EditingRecNo:= Field.DataSet.RecNo;
end;
procedure TJDbGridDateCtrl.myEditOnEditingDone(Sender: TObject);
begin
if not Assigned(Field) or not Assigned(Field.Dataset) or not Field.DataSet.Active then
exit;
if (oldValue <> Field.AsDateTime) or (EditingFieldName <> Field.FieldName) then
if (EditingRecNo <> Field.DataSet.RecNo) or (EditingFieldNo <> Field.FieldNo) then
exit; // avoid update wrong record/field because dataset scrolling
if Length(CellEditor.Caption) = 0 then
begin
@ -986,16 +986,16 @@ begin
CellEditor.OnKeyDown := @OnKeyDown;
theValue := Field.AsFloat;
updated := False;
oldValue:= Field.AsFloat;
EditingFieldName:= Field.FieldName;
CellEditor.SelectAll;
EditingFieldNo:= Field.FieldNo;
EditingRecNo:= Field.DataSet.RecNo;
end;
procedure TJDbGridDoubleCtrl.myEditOnEditingDone(Sender: TObject);
begin
if not Assigned(Field) or not Assigned(Field.Dataset) or not Field.DataSet.Active then
exit;
if (oldValue <> Field.AsFloat) or (EditingFieldName <> Field.FieldName) then
if (EditingRecNo <> Field.DataSet.RecNo) or (EditingFieldNo <> Field.FieldNo) then
exit; // avoid update wrong record/field because dataset scrolling
if IsValidFloat(CellEditor.Caption) then
begin
@ -1141,10 +1141,10 @@ begin
CellEditor.OnKeyPress := @OnKeyPress; // Recuperamos el control :-p
CellEditor.OnKeyDown := @OnKeyDown;
theValue := Field.AsInteger;
oldValue:= Field.AsInteger;
EditingFieldName:= Field.FieldName;
CellEditor.SelectAll;
updated := False;
EditingFieldNo:= Field.FieldNo;
EditingRecNo:= Field.DataSet.RecNo;
end;
procedure TJDbGridIntegerCtrl.OnKeyPress(Sender: TObject; var key: char);
@ -1196,7 +1196,7 @@ procedure TJDbGridIntegerCtrl.myEditOnEditingDone(Sender: TObject);
begin
if not Assigned(Field) or not Assigned(Field.Dataset) or not Field.DataSet.Active then
exit;
if (oldValue <> Field.AsInteger) or (EditingFieldName <> Field.FieldName) then
if (EditingRecNo <> Field.DataSet.RecNo) or (EditingFieldNo <> Field.FieldNo) then
exit; // avoid update wrong record/field because dataset scrolling
if IsValidInteger(CellEditor.Caption) then
begin