From 8c636b64e7854a137a177c931c239747e4254b99 Mon Sep 17 00:00:00 2001 From: wp_xyz Date: Sun, 18 Feb 2024 00:04:09 +0100 Subject: [PATCH] LCL: Improved handling of enabled/disabled controls in TreeView component editor. Part of patch by n7800, submitted for issue #40748 --- components/ideintf/treeviewpropedit.pas | 41 +++++++++++++++++-------- 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/components/ideintf/treeviewpropedit.pas b/components/ideintf/treeviewpropedit.pas index 1854ba09d2..3a3a5f7f78 100644 --- a/components/ideintf/treeviewpropedit.pas +++ b/components/ideintf/treeviewpropedit.pas @@ -148,18 +148,21 @@ end; procedure TTreeViewItemsEditorForm.btnNewItemClick(Sender: TObject); var - S: String; + lNewName: String; begin - S := sccsTrEdtItem + IntToStr(treEditor.Items.Count); - if (Sender as TComponent).Tag = 1 then - treEditor.Selected := treEditor.Items.Add(treEditor.Selected, S) + lNewName := sccsTrEdtItem + IntToStr(treEditor.Items.Count); + if Sender = btnNewItem then + treEditor.Selected := treEditor.Items.Add(treEditor.Selected, lNewName) else - treEditor.Selected := treEditor.Items.AddChild(treEditor.Selected, S); + if Sender = btnNewSubItem then + treEditor.Selected := treEditor.Items.AddChild(treEditor.Selected, lNewName) + else + raise Exception.Create('[btnNewItemClick] Unknown Sender.'); - grpNodeEditor.Enabled := treEditor.Items.Count > 0; + //grpNodeEditor.Enabled := treEditor.Items.Count > 0; edtNodeText.SetFocus; - edtNodeText.SelectAll; + //edtNodeText.SelectAll; end; procedure TTreeViewItemsEditorForm.Edit1Change(Sender: TObject); @@ -331,6 +334,7 @@ begin treEditor.StateImages := ATreeView.StateImages; treEditor.Items.Assign(ATreeView.Items); end; + treEditor.Selected := treEditor.Items.GetFirstNode; UpdateEnabledStates; end; @@ -345,12 +349,25 @@ end; procedure TTreeViewItemsEditorForm.UpdateEnabledStates; var - CurNode: TTreeNode; + lCurNode: TTreeNode; begin - CurNode := treEditor.Selected; - btnMoveUp.Enabled := Assigned(CurNode) and Assigned(CurNode.GetPrevSibling); - btnMoveDown.Enabled:=Assigned(CurNode) and Assigned(CurNode.GetNextSibling); - grpNodeEditor.Enabled := Assigned(CurNode); + lCurNode := treEditor.Selected; + + // Control states + btnSave.Enabled := treEditor.Items.Count > 0; + btnMoveUp.Enabled := Assigned(lCurNode) and Assigned(lCurNode.GetPrevSibling); + btnMoveDown.Enabled := Assigned(lCurNode) and Assigned(lCurNode.GetNextSibling); + btnDelete.Enabled := Assigned(lCurNode); + grpNodeEditor.Enabled := Assigned(lCurNode); + + // Clear disabled fields + if lCurNode = nil then + begin + edtNodeText.Text := ''; + spnImageIndex.Value := -1; + spnSelectedIndex.Value := -1; + spnStateIndex.Value := -1; + end; end;