Drag a TAdvTreeView on your form.
AdvTreeView1.Interaction.Multiselect := True;
AdvTreeView1.Interaction.DragDropMode := tdmMove;
Now it isn't possible anymore to unselect selected nodes with a mouse click while pressing the Shift- or Ctrl-key.
I found a position in the source code of AdvCustomTreeView.pas and inserted two conditions:
procedure TAdvCustomTreeView.HandleMouseDown
Original:
FDragMode := Assigned(FDownNode) and (Interaction.DragDropMode <> tdmNone) and not FDblClicked and not XYToNodeExpand(FDownNode, X, Y)
and not XYToNodeExtra(FDownNode, X, Y) and not XYToNodeTitleExtra(FDownNode, X, Y) and not Assigned(XYToNodeCheck(FDownNode, X, Y).ANode);Changed:
FDragMode := Assigned(FDownNode) and (Interaction.DragDropMode <> tdmNone) and not FDblClicked and not XYToNodeExpand(FDownNode, X, Y)
and not XYToNodeExtra(FDownNode, X, Y) and not XYToNodeTitleExtra(FDownNode, X, Y) and not Assigned(XYToNodeCheck(FDownNode, X, Y).ANode)
// These lines added:
and not ((ssShift in Shift) and (msShiftSelect in Interaction.MultiSelectStyle))
and not ((ssCtrl in Shift) and (msControlSelect in Interaction.MultiSelectStyle));
Maybe another way exists already to solve this problem?
Or would it be possible to insert these changes in a future release or give the user another possibility to activate such an operating mode?