Delphi: отменить выбор выбранных элементов в представлении дерева - PullRequest
3 голосов
/ 27 июля 2011

Существует древовидное представление, MultiSelect:=true.

Если выбрать все элементы, отменить выбор или выбрать еще раз невозможно, кроме других.Я думаю, что мне нужно сделать TreeView1.Selected.Selected:=false; на TForm1.TreeView1Click.Но как узнать, не был ли клик на элементах управления: элементах, кнопках?

Видео: http://liga -installer.realservers.info / select.mp4

Код ниже нормы?

procedure TForm1.TreeView1Click(Sender: TObject);
var
Item: TTreeNode;
 begin

  Item :=TTreeView(Sender).GetNodeAt(TTreeView(Sender).ScreenToClient(Mouse.CursorPos).X,
  TTreeView(Sender).ScreenToClient(Mouse.CursorPos).y);

  if (not Assigned(Item)) and (TTreeView(Sender).SelectionCount>0) then TTreeView(Sender).Select(nil, []);
 end;

Спасибо!

1 Ответ

2 голосов
/ 27 июля 2011

Вы должны удерживать клавишу Shift при нажатии на первый выбранный элемент. Вы также можете отменить выбор одного элемента за раз, щелкнув по нему Ctrl.

Но я согласен, что это нелогично. Я бы сделал

procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  i: Integer;
begin
  if not Assigned(TreeView1.GetNodeAt(X, Y)) then
    for i := 0 to TreeView1.Items.Count - 1 do
      TreeView1.Items[i].Selected := false;
end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...