You've already forked lazarus-ccr
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:
@ -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
|
||||
|
Reference in New Issue
Block a user