Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Нюанс при использовании TVirtualStringTree


Автор: Caduser 4.10.2006, 08:23
Попробуйте включить опцию toMultiSelect в TreeOptions.SelectionOptions, выделите любой узел, а затем кликните где-нибудь в пустом месте в этом контроле - в результате выделение с узла будет снято. Т.е. можно "оставить" дерево без единого выделенного узла. 
Вопрос: как сделать чтоб не допустить такую ситуацию - когда не выделено ни одного узла?

P.S. При отключенной опции toMultiSelect выделение работает как надо, но естественно теряется возможность выделять несколько узлов.

Автор: Yanis 4.10.2006, 11:12
Цитата(Caduser @  4.10.2006,  09:23 Найти цитируемый пост)
Вопрос: как сделать чтоб не допустить такую ситуацию - когда не выделено ни одного узла?

Проверять сколько выделено и выделять, если нужно.

Автор: Caduser 6.10.2006, 03:04
Цитата(Yanis @ 4.10.2006,  11:12)
Проверять сколько выделено и выделять, если нужно.

проверить сколько выделено не проблема:
Код

procedure TForm1.VST1Change(Sender: TBaseVirtualTree; Node: PVirtualNode);
begin
  if VST1.SelectedCount=0 then
    begin
      // восстановление выделения
    end;  
end;

но как восстановить выделение тех узлов которые были выделены? В событии VST1Change метод VST1.Selected[VST1.GetFirstSelected]:=true не сработает т.к. уже не известно какие узлы были выделены.

Автор: forever 6.10.2006, 08:07
Цитата(Caduser @  4.10.2006,  08:23 Найти цитируемый пост)
Вопрос: как сделать чтоб не допустить такую ситуацию - когда не выделено ни одного узла?

toPopupMode (PaintOptions) не спасает?

Сорри, сначала написал, потом проверил - при toMultiSelect снимается выделение. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)