Filter löschen
Filter löschen

Is it possible to disable parent node selection in a uitree?

37 Ansichten (letzte 30 Tage)
Adam
Adam am 4 Aug. 2023
Beantwortet: Mario Malic am 14 Aug. 2023
Is there any way to disable certain nodes in a uitree from being selectable? In particular I have a situation similar to that shown below, where I have multiple parent nodes to group objects within the tree. I want to allow the user to select objects from different groups (e.g. Banana and Carrot here), but I don't want to allow the parent node 'Fruit' to be selected because this makes no sense in my use case, it is just there as a grouping (and I don't wish it to represent selecting every item in that group either, it's not a helpful use case for me).
I'm still relatively new to the App Designer style of UI components, but I don't see any option on the node properties to allow this.
  4 Kommentare
Mario Malic
Mario Malic am 4 Aug. 2023
You can also use the Tree component with the checkmark, it is in the component browser, it's often overlooked. So you can use the CheckedNodes property to do what you need to do with the selection.
Adam
Adam am 4 Aug. 2023
I did look at the Checked tree too, but it also doesn't distinguish at all between a parent node and a leaf node, or allow me to do so.
'Veg' wasn't selected above because I made the selection myself, by clicking on the elements of the tree in multiselect mode and I only clicked 'Fruit' to demonstrate it as an example of what I don't want to be possible.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Mario Malic
Mario Malic am 14 Aug. 2023
Hey,
I hope you have sorted it out, however, here's an example in which SelectionChangedFcn is used to remove the nodes which have children from selection.
h = uitree("Multiselect","on");
fruitH = uitreenode(h, "Text", "Fruit");
vegH = uitreenode(h, "Text", "Veg");
uitreenode(fruitH, "Text", "Apple");
uitreenode(fruitH, "Text", "Fig");
uitreenode(vegH, "Text", "Carrot");
uitreenode(vegH, "Text", "Cabbage");
h.SelectionChangedFcn = @(src, evt) treeSelectionChangedFcn(src,evt);
Function is below
function treeSelectionChangedFcn(src, evt)
selection = src.SelectedNodes;
selectionChildren = {selection(:).Children};
selectionIdx = cellfun(@isempty, selectionChildren);
src.SelectedNodes(~selectionIdx) = [];
end

Kategorien

Mehr zu Migrate GUIDE Apps finden Sie in Help Center und File Exchange

Produkte


Version

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by