Конференция "Базы" » Компонент jvdbtreeview [D7, MSSQL]
 
  • Ксения © (14.12.12 11:04) [0]
    Возникла такая проблема: Отображаю таблицу при помощи  jvdbtreeview, после добавления  записи в таблицу нужно стать на новую запись, как?
  • O'ShinW © (14.12.12 13:14) [1]
    если сам добавляешь, то можно в соответствующем DataSet ловить в AfterPost значения полей Мастер, Парент, Отображения
    И потом по ним искать ноду, она будет добавленной
  • Ксения © (14.12.12 14:21) [2]
    Я добавляю запись через ADOCommand поэтому AfterPost не обрабатывается
  • Ксения © (14.12.12 14:47) [3]
    Подскажите пожалуйста как найти Node по значению поля
  • O'ShinW © (14.12.12 15:30) [4]
    можно стандартно

     N := treeview.Items.GetFirstNode;
     while N <> nil do
     begin
       if N.Text = 'Искомый' then
       begin
        ShowMessag('этот')
        Exit;
       end;
       N := N.GetNext;
     end;

    а можно посмотреть чем джедайский tree отличается от стандартного
    вроде, jedi фигню не пишут, должно быть  что-то
    это код их надо смотреть

    у меня нет его
    как-то руками стандартный treeview удается допиливать под задуманное. :)
    Потом посаженные данные в Node.DATA могут быть любыми,
    искать можно как угодно и что угодно.
    см http://www.delphikingdom.com/asp/viewitem.asp?catalogid=488
  • Ксения © (14.12.12 16:01) [5]
    Спасибо, попробую в цикле, готовой процедуры не нашла.
  • KilkennyCat © (15.12.12 15:20) [6]

    >  jedi фигню не пишут

    еще как пишут, к сожалению.
  • MsGuns © (18.12.12 10:55) [7]
    >Я добавляю запись через ADOCommand поэтому AfterPost не обрабатывается

    @@IDENTITY/SCOPE_IDENTITY()

    >Подскажите пожалуйста как найти Node по значению поля

    Перебором
  • MsGuns © (18.12.12 11:02) [8]
    Не знаю джеди, но полагаю, что нужно сначала найти запись в датасете (Locate), а потом синхронизировать позицию в дереве.
  • O'ShinW © (18.12.12 11:29) [9]
    @@SCOPE_IDENTITY()
    Конечно же! Совсем забыл..

    кстати, перебор можно начать с некоторого абсолютного индекса ноды.
    все ноды имеют абсолютный индекс, который увеличивается. Зная максимум, дальше можно тупо идти вверх, до нового максимума, который запомнить на будущее.
    Потом, нода же как-то добавляется компонентом. Надо поискать где.
    Возможно, написать Паблика Морозова, который откроет это место /  посадить нотификатор
  • MsGuns © (18.12.12 15:41) [10]
    >O'ShinW ©   (18.12.12 11:29) [9]
    >кстати, перебор можно начать с некоторого абсолютного индекса ноды.

    AbsoluteIndex - жутко тормознутая штука в TTreeNode, насколько помнится (D7). На деревьях в несколько десятков тысяч узлов просто "подвешивает" комп :)
  • O'ShinW © (18.12.12 16:48) [11]
    тогда только Морозов :)
    аля так

     TForm1 = class(TForm)
       tv1: TTreeView;
       btn1: TButton;
       btn2: TButton;
       procedure btn2Click(Sender: TObject);
       procedure btn1Click(Sender: TObject);
     private      { Private declarations }
     public       { Public declarations }
       procedure OnAdd(Sender: TObject; Node: TTreeNode);
     end;

     TTV = class (TCustomTreeView)
      public
       property OnAddition;
     end;
    var
     Form1: TForm1;

    implementation
    {$R *.dfm}

    procedure TForm1.btn2Click(Sender: TObject);
    begin
     tv1.Items.AddChild(nil,'root'+datetimetostr(Now));
    end;

    procedure TForm1.btn1Click(Sender: TObject);
    begin
     TTV(tv1).OnAddition := OnAdd;
    end;

    procedure TForm1.OnAdd(Sender: TObject; Node: TTreeNode);
    begin
     ShowMessage(Node.Text);
    end;
 
Конференция "Базы" » Компонент jvdbtreeview [D7, MSSQL]
Есть новые Нет новых   [119426   +10][b:0][p:0.001]