mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-22 18:48:25 +02:00
LCL, fix several db controls to not enter dataset in edit state if datasource.autoedit is false, issue #8739
git-svn-id: trunk@11066 -
This commit is contained in:
parent
920d0c3b8e
commit
15f7db6d03
@ -494,6 +494,7 @@ Type
|
|||||||
procedure FocusRequest(Sender: TObject); virtual;
|
procedure FocusRequest(Sender: TObject); virtual;
|
||||||
procedure Loaded; override;
|
procedure Loaded; override;
|
||||||
procedure EditingDone; override;
|
procedure EditingDone; override;
|
||||||
|
procedure UpdateText;
|
||||||
public
|
public
|
||||||
constructor Create(TheOwner: TComponent); override;
|
constructor Create(TheOwner: TComponent); override;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
|
@ -1533,16 +1533,12 @@ begin
|
|||||||
|
|
||||||
SelField := SelectedField;
|
SelField := SelectedField;
|
||||||
TempColumn := TColumn(ColumnFromGridColumn(Col));
|
TempColumn := TColumn(ColumnFromGridColumn(Col));
|
||||||
if (TempColumn<>nil) and not TempColumn.ReadOnly then
|
if (TempColumn<>nil) and not TempColumn.ReadOnly and FDatalink.Edit then
|
||||||
begin
|
begin
|
||||||
if SelField.DataType=ftBoolean then
|
if SelField.DataType=ftBoolean then
|
||||||
begin
|
|
||||||
SelField.DataSet.Edit;
|
|
||||||
SelField.AsBoolean := not SelField.AsBoolean
|
SelField.AsBoolean := not SelField.AsBoolean
|
||||||
end
|
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
SelField.DataSet.Edit;
|
|
||||||
if ValueMatch(TempColumn.ValueChecked, SelField.AsString) then
|
if ValueMatch(TempColumn.ValueChecked, SelField.AsString) then
|
||||||
SelField.AsString := TempColumn.ValueUnchecked
|
SelField.AsString := TempColumn.ValueUnchecked
|
||||||
else
|
else
|
||||||
|
@ -149,9 +149,11 @@ end;
|
|||||||
|
|
||||||
procedure TDBCheckBox.EditingDone;
|
procedure TDBCheckBox.EditingDone;
|
||||||
begin
|
begin
|
||||||
FDatalink.Edit;
|
if FDatalink.Edit then begin
|
||||||
FDatalink.Modified;
|
FDatalink.Modified;
|
||||||
FDataLink.UpdateRecord;
|
FDataLink.UpdateRecord;
|
||||||
|
end else
|
||||||
|
State:=GetFieldCheckState;
|
||||||
inherited EditingDone;
|
inherited EditingDone;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -36,10 +36,12 @@ begin
|
|||||||
//need to override this to make sure the datalink gets notified
|
//need to override this to make sure the datalink gets notified
|
||||||
//its been modified, then when post etc, it will call
|
//its been modified, then when post etc, it will call
|
||||||
//updatedata to update the field data with current value
|
//updatedata to update the field data with current value
|
||||||
FDatalink.Edit;
|
if FDatalink.Edit then
|
||||||
FDataLink.Modified;
|
begin
|
||||||
|
FDataLink.Modified;
|
||||||
inherited Change;
|
inherited change;
|
||||||
|
end else
|
||||||
|
UpdateText;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -69,15 +71,9 @@ end;
|
|||||||
|
|
||||||
procedure TDBComboBox.DataChange(Sender: TObject);
|
procedure TDBComboBox.DataChange(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if not (Style=csSimple) and DroppedDown then Exit;
|
if not (Style=csSimple) and DroppedDown then
|
||||||
if FDataLink.Field <> nil then
|
Exit;
|
||||||
// ToDo: use Field.Text
|
UpdateText;
|
||||||
Text := FDataLink.Field.DisplayText
|
|
||||||
else
|
|
||||||
if csDesigning in ComponentState then
|
|
||||||
Text := Name
|
|
||||||
else
|
|
||||||
Text := '';
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDBComboBox.EditingChange(Sender: TObject);
|
procedure TDBComboBox.EditingChange(Sender: TObject);
|
||||||
@ -123,6 +119,18 @@ begin
|
|||||||
inherited EditingDone;
|
inherited EditingDone;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TDBComboBox.UpdateText;
|
||||||
|
begin
|
||||||
|
if FDataLink.Field <> nil then
|
||||||
|
// ToDo: use Field.Text
|
||||||
|
Text := FDataLink.Field.DisplayText
|
||||||
|
else
|
||||||
|
if csDesigning in ComponentState then
|
||||||
|
Text := Name
|
||||||
|
else
|
||||||
|
Text := '';
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TDBComboBox.ActiveChange(Sender: TObject);
|
procedure TDBComboBox.ActiveChange(Sender: TObject);
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
@ -157,7 +157,11 @@ begin
|
|||||||
//so if a user changed the selection it can be
|
//so if a user changed the selection it can be
|
||||||
//updated, and if not canel out ala ReadOnly
|
//updated, and if not canel out ala ReadOnly
|
||||||
if not FDataLink.Edit then
|
if not FDataLink.Edit then
|
||||||
|
begin
|
||||||
|
// restore value
|
||||||
|
DataChange(self);
|
||||||
exit;
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
inherited Click;
|
inherited Click;
|
||||||
FDataLink.Modified;
|
FDataLink.Modified;
|
||||||
|
@ -141,8 +141,10 @@ begin
|
|||||||
Value := GetButtonValue(ItemIndex);
|
Value := GetButtonValue(ItemIndex);
|
||||||
if (Value<>OldValue) and FDatalink.CanModify and not SettingValue then
|
if (Value<>OldValue) and FDatalink.CanModify and not SettingValue then
|
||||||
begin
|
begin
|
||||||
FDatalink.Edit; // ensure that we are in edit state
|
if FDatalink.Edit then // ensure that we are in edit state
|
||||||
FDataLink.Modified;
|
FDataLink.Modified
|
||||||
|
else
|
||||||
|
DataChange(Self);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user