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


Автор: Erazer 10.7.2008, 14:59
Как программно переместить курсор (выделение) в VirtualTreeView ?

Автор: VICTAR 10.7.2008, 15:18
Код

    VT.FocusedNode := lNode;
    VT.Selected[lNode] := True;

Автор: Erazer 10.7.2008, 23:58
Пасип! Вот оно  перемещение по дереву - 
Код

VT.Selected[VT.FocusedNode] := False;
VT.FocusedNode:=VT.GetNext(VT.FocusedNode);
VT.Selected[VT.FocusedNode] := True;


Автор: aktuba 11.7.2008, 01:16
VICTAR, тебе показал как переместиться к любому ноду. Твой код перемещается только к следующему. Кстати, его можно написать проще:
Код

VT.FocusedNode:=VT.GetNext(VT.FocusedNode);

Автор: Erazer 11.7.2008, 03:14
мне не нужно было к любому,нужно было к следующему, ну да не об том речь, можно, НО тогда выделенными становятся ВСЕ ноды по которым прошло перемещение.... Мне это не нужно, для этого приходится таскать за ним и выделение. Просто пришлось немного подумать прежде чем я догадался Как сделать, зачем кому то решать задачи которые МЫ уже решили ? Пусть решает другие - еще не решенные нами  smile

Добавлено через 2 минуты и 25 секунд
а вообще весь код перехода на след узел у меня выглядит так :
Код

  procedure TfmMain.btn3Click(Sender: TObject);
  label Start;
  var
    FileNode: PFileNode;
    TmpNode: PVirtualNode;
  begin
    Start:
    VT.Selected[VT.FocusedNode] := False;
    TmpNode := VT.FocusedNode; // сохраним чтобы использовать если будет нужно
    VT.FocusedNode := VT.GetPrevious(VT.FocusedNode);
    if VT.FocusedNode = nil then begin // если конец то остаемся на месте
      VT.FocusedNode := TmpNode;
      VT.Selected[TmpNode] := True;
      Exit;
    end;
    FileNode := VT.GetNodeData(VT.FocusedNode);
    if Assigned(FileNode) then
      with FileNode^ do
      begin
        if IsFile = False then goto Start else VT.Selected[VT.FocusedNode] := True;
      end;
    btn4Click(Sender); //прекратить играть
  end;



Добавлено через 3 минуты и 20 секунд
точнее на предыдущий  smile  ну кому надо тот разберется  smile 

Автор: aktuba 11.7.2008, 08:44
Цитата(Erazer @  11.7.2008,  04:14 Найти цитируемый пост)
НО тогда выделенными становятся ВСЕ ноды по которым прошло перемещение....

Значит включен multiselect ;)

Автор: Erazer 11.7.2008, 10:59
ну прально включен стобы можно было несколько сразу выбрать.... 

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