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