mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-12-10 00:17:18 +01:00
IDE, fixes lazarus freeze after closing fields editor (issue #8925), also improved fields editor so it keeps dataset opened while adding/removing fields
git-svn-id: trunk@11751 -
This commit is contained in:
parent
8025a708bc
commit
a799777f36
@ -146,11 +146,11 @@ end;
|
||||
|
||||
procedure TDSFieldsEditorFrm.DeleteFieldsActnExecute(Sender: TObject);
|
||||
var i: integer;
|
||||
sActive: boolean;
|
||||
PreActive: boolean;
|
||||
bModified: boolean;
|
||||
fld: TField;
|
||||
begin
|
||||
sActive := LinkDataSet.Active;
|
||||
PreActive := LinkDataSet.Active;
|
||||
LinkDataSet.Active := False;
|
||||
bModified := False;
|
||||
for i := FieldsListBox.Items.Count - 1 downto 0 do
|
||||
@ -161,8 +161,10 @@ begin
|
||||
fld.Free;
|
||||
bModified := True;
|
||||
end;
|
||||
if bModified then fDesigner.Modified;
|
||||
if LinkDataset.Fields.Count > 0 then LinkDataSet.Active := sActive;
|
||||
if bModified then
|
||||
fDesigner.Modified;
|
||||
if PreActive then
|
||||
LinkDataSet.Active := True;
|
||||
SelectionChanged;
|
||||
end;
|
||||
|
||||
@ -181,7 +183,6 @@ begin
|
||||
end;
|
||||
if Assigned(GlobalDesignHook) then
|
||||
GlobalDesignHook.RemoveAllHandlersForObject(Self);
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
procedure TDSFieldsEditorFrm.FieldsListBoxKeyDown(Sender: TObject; var Key: Word;
|
||||
@ -221,8 +222,11 @@ end;
|
||||
procedure TDSFieldsEditorFrm.RefreshFieldsListBox(SelectAllNew: boolean);
|
||||
var i, j: integer;
|
||||
fld: TField;
|
||||
PreActive: boolean;
|
||||
begin
|
||||
if LinkDataset.Active And LinkDataset.DefaultFields then LinkDataset.Close;
|
||||
PreActive := LinkDataSet.Active;
|
||||
if PreActive And LinkDataset.DefaultFields then
|
||||
LinkDataset.Close;
|
||||
//Deselect & refresh all existing
|
||||
DoSelected(False);
|
||||
//Add new fields
|
||||
@ -233,6 +237,8 @@ begin
|
||||
FieldsListBox.Selected[j] := SelectAllNew;
|
||||
end;
|
||||
end;
|
||||
if PreActive and not LinkDataset.Active then
|
||||
LinkDataset.Active:=true;
|
||||
end;
|
||||
|
||||
procedure TDSFieldsEditorFrm.NewActnExecute(Sender: TObject);
|
||||
@ -437,6 +443,7 @@ end;
|
||||
procedure TFieldsComponentEditor.EditorWindowClose;
|
||||
begin
|
||||
fWindowClosed := True;
|
||||
FFieldsEditorForm:=nil;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
@ -69,7 +69,9 @@ procedure TFieldsListFrm.BitBtnOkClick(Sender: TObject);
|
||||
var i: integer;
|
||||
NewField: TField;
|
||||
fModified: boolean;
|
||||
PreActive: boolean;
|
||||
begin
|
||||
PreActive := LinkDataset.Active;
|
||||
LinkDataSet.Active := False;
|
||||
fModified := False;
|
||||
for i := 0 to ListBox1.Items.Count - 1 do begin
|
||||
@ -81,6 +83,8 @@ begin
|
||||
end;
|
||||
end;
|
||||
if fModified then FDesigner.Modified;
|
||||
if PreActive then
|
||||
LinkDataset.Active:=True;
|
||||
end;
|
||||
|
||||
procedure TFieldsListFrm.RefreshFieldsList;
|
||||
@ -107,18 +111,31 @@ procedure TFieldsListFrm.RefreshFieldsList;
|
||||
end;
|
||||
end;
|
||||
|
||||
var i: integer;
|
||||
var
|
||||
i: integer;
|
||||
PreActive: boolean;
|
||||
begin
|
||||
i := 0;
|
||||
ListBox1.Clear;
|
||||
BitBtnOk.Enabled := False;
|
||||
if Not Assigned(LinkDataset) then Exit;
|
||||
with LinkDataset do begin
|
||||
Active := False;
|
||||
FieldDefs.Update;
|
||||
end;
|
||||
if not Assigned(LinkDataset) then Exit;
|
||||
// refresh fielddefs
|
||||
LinkDataset.FieldDefs.Update;
|
||||
PreActive:=LinkDataset.Active;
|
||||
LinkDataset.Active := False;
|
||||
i := FillList;
|
||||
BitBtnOk.Enabled := i > 0;
|
||||
if PreActive then
|
||||
LinkDataset.Active:=True;
|
||||
{
|
||||
PreActive:=LinkDataset.Active;
|
||||
LinkDataset.Active := False;
|
||||
LinkDataset.FieldDefs.Update;
|
||||
i := FillList;
|
||||
BitBtnOk.Enabled := i > 0;
|
||||
if PreActive then
|
||||
LinkDataset.Active:=True;
|
||||
}
|
||||
end;
|
||||
|
||||
constructor TFieldsListFrm.Create(AOwner: TComponent; ADataset: TDataset;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user