CheckBoxTree - Programmatic Checking/Unchecking of Nodes

26 Ansichten (letzte 30 Tage)
Randy Price
Randy Price am 28 Apr. 2022
Kommentiert: Markus Leuthold am 16 Jul. 2025
How can I programmatically check/uncheck nodes of a CheckBoxTree?
edit: spelling
  1 Kommentar
Markus Leuthold
Markus Leuthold am 16 Jul. 2025
I understand how to check nodes
treeRoot = uitree("checkbox");
node1 = uitreenode(treeRoot, text="A - level 1");
node2 = uitreenode(treeRoot, text="B - level 1");
node3 = uitreenode(node1, text="A - level 2");
check A, which implicitly checks A level 1&2
treeRoot.CheckedNodes = node1;
check B
treeRoot.CheckedNodes = [treeRoot.CheckedNodes; node2];
How to uncheck A and its child?? Checking implicitly sets children as well, but not unchecking? Not sure if this was intended by @MathWorks Support Team
treeRoot.CheckedNodes(treeRoot.CheckedNodes == node1) = []; % does not work, because node2 is still toggled
This works, but it seems like I need to keep track of the tree myself?
treeRoot.CheckedNodes(ismember(treeRoot.CheckedNodes, [node1,node3])) = [];

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Randy Price
Randy Price am 29 Apr. 2022
Resolved - assign nodes of the CheckBoxTree to its "SelectedNodes" property.
  2 Kommentare
STEVEN SATTERFIELD
STEVEN SATTERFIELD am 12 Jan. 2023
Bearbeitet: John Kelly am 23 Okt. 2023
It is not the "SelectedNodes" property, but rather the "CheckedNodes" property to which you must add or remove nodes. What would be helpful is an example of how to do that.
Fabian Schnurre
Fabian Schnurre am 7 Dez. 2023
yes, please give more information about that

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Kris Hoffman
Kris Hoffman am 3 Mär. 2023
Bearbeitet: Kris Hoffman am 3 Mär. 2023
I'm using app designer and came across this issue. The above answers gave me the idea to simply address them in the 'CheckedNodes' attribute of the tree.
The first entry is put into the 'CheckedNodes' list does not need to be indexed.
app.Tree.CheckedNodes = app.Tree.Children(i).Children(j)
The following code adds the 3rd child of the 5th parent entry (I know it says children twice), to the end of the entries in the 'CheckedNodes' attribute.
app.Tree.CheckedNodes(end+1) = app.Tree.Children(5).Children(3)
then checking the checked nodes:
app.Tree.CheckedNodes
The last entry is there!
You can also add all entries under a "parent" node as follows:
app.Tree.CheckedNodes(end+1) = app.Tree.Children(5).Children
Now to remove a specific entry, as far as I know, you would need to know where it is in the TreeNode array. I was able to uncheck a box by using the following code.
app.Tree.CheckedNodes(2) = '';
The entry was removed and box, unchecked!
Hope that helps!
  1 Kommentar
Fabian Schnurre
Fabian Schnurre am 7 Dez. 2023
string compare and everything that ai playground offers as an solution to find the place where the node is in the array doesn't work

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu MATLAB Code Analysis finden Sie in Help Center und File Exchange

Produkte


Version

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by