-
Возникла такая проблема: Отображаю таблицу при помощи jvdbtreeview, после добавления записи в таблицу нужно стать на новую запись, как?
-
если сам добавляешь, то можно в соответствующем DataSet ловить в AfterPost значения полей Мастер, Парент, Отображения И потом по ним искать ноду, она будет добавленной
-
Я добавляю запись через ADOCommand поэтому AfterPost не обрабатывается
-
Подскажите пожалуйста как найти Node по значению поля
-
можно стандартно 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
-
Спасибо, попробую в цикле, готовой процедуры не нашла.
-
> jedi фигню не пишут
еще как пишут, к сожалению.
-
>Я добавляю запись через ADOCommand поэтому AfterPost не обрабатывается
@@IDENTITY/SCOPE_IDENTITY()
>Подскажите пожалуйста как найти Node по значению поля
Перебором
-
Не знаю джеди, но полагаю, что нужно сначала найти запись в датасете (Locate), а потом синхронизировать позицию в дереве.
-
@@SCOPE_IDENTITY() Конечно же! Совсем забыл..
кстати, перебор можно начать с некоторого абсолютного индекса ноды. все ноды имеют абсолютный индекс, который увеличивается. Зная максимум, дальше можно тупо идти вверх, до нового максимума, который запомнить на будущее. Потом, нода же как-то добавляется компонентом. Надо поискать где. Возможно, написать Паблика Морозова, который откроет это место / посадить нотификатор
-
>O'ShinW © (18.12.12 11:29) [9] >кстати, перебор можно начать с некоторого абсолютного индекса ноды.
AbsoluteIndex - жутко тормознутая штука в TTreeNode, насколько помнится (D7). На деревьях в несколько десятков тысяч узлов просто "подвешивает" комп :)
-
тогда только Морозов :) аля так
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;
|