Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » VirtualTreeView

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

mrrex



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ну, как и обещал продолжаю.
Да. Сразу хочу оговориться, примеры для Делфей есть в ДЕМО программе дерева.
Дельфистам лучшее смотреть именно туда.
 
Итак.
 
Базовый обьект редактора мы сделали.
теперь определяем его наследника, для каждого дерева - свой. Хотя можно и один для
нескольких, как душа просит.
 
Следующий код - в заголовочном файле окна, содержащего дерево.
Обращайте внимание на //-- выделенные комментарии
ну и на другие тоже
Подробнее...
 
Непосредственная реализация функций объекта:
 
Подробнее...
 
Теперь в каждом дереве, которому необходимо иметь встраиваемый редактор переопределяем
несколько событий.

OnCreateEditor
OnEdited
OnEditing

 
Подробнее...
 
ВСЕ!!!
 
Вопросы есть?

Всего записей: 110 | Зарегистр. 11-12-2005 | Отправлено: 14:46 25-08-2006 | Исправлено: mrrex, 14:48 25-08-2006
Pinocchio

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ну а для дельфи паскал будет не лишним, чтобы начать.
Подробнее...

Всего записей: 683 | Зарегистр. 18-11-2002 | Отправлено: 18:27 25-08-2006
SALAR

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите, кто работал в Delphi с VT. Несколько дней уже бьюсь и не могу преодолеть следующий глюк. Заполняю в процедуре InitNode данные узлов:
with Sender do begin
  Data:= GetNodeData(Node);
  Initialize(Data^);
  Data.AMaterialGroupNumber:=tblMaterialGroupData.FieldByName('Id_group').AsInteger;
  Data.AMaterialGroupName:=tblMaterialGroupData.FieldByName('MaterialGroupName').AsString;
  Data.Caption := Format('Level %d, Index %d', [GetNodeLevel(Node), Node.Index]);
                end;
  with query1 do  
begin
    close;
    SQL.Clear;
    SQL.Add('Select MaterialName from Material.db where id_group=:P_TABLE1_ID');
    ParamByName('P_TABLE1_ID').AsInteger:=Data.AMaterialGroupNumber;
    open;          
end;
    if Query1.RecordCount > 0 then  
begin
        Include(InitialStates, ivsHasChildren); Query1.First;
        for i:=0 to Query1.RecordCount-1 do  
begin
        ChildNode:=Sender.AddChild(Node);
        with Sender do  
    begin
        ChildData:=GetNodeData(ChildNode);
        Initialize(ChildData^);
        ChildData.Caption:=Query1.Fields[0].AsString;
        ChildData.AMaterialGroupNumber:=Data.AMaterialGroupNumber;
        ChildData.AMaterialGroupName:=Data.AMaterialGroupName;
       end;
    Query1.Next;                          
end;
end;
if not tblMaterialGroupData.eof then
    tblMaterialGroupData.Next;
Как видите, формирую корневые узлы и дочерние, где меняется только Caption.
Когда я в событии GetText пытаюсь отобразить подписи узлов:
Data := Sender.GetNodeData(Node);
  case Sender.GetNodeLevel(Node) of
  0:
  if Assigned(Data) then
    Text:=Data.AMaterialGroupName;
  1: begin
    Text:=Data.Caption;
       end;
  end;
то для дочернего узла отображается caption из данных корневого узла, как будто данные дочернего узла не инициализировались. В отладчике, в строке  
Text:=Data.Caption;
параметр node почему то соответствует последнему корневому узлу (а он дочерних элементов не имеет), а не тому, с которого порождается дочерний элемент (level 1), поэтому и получается caption родительского узла.

Всего записей: 101 | Зарегистр. 14-11-2003 | Отправлено: 14:59 16-09-2009
AlexNMelnikov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Попробуйте вынести заполнение дерева в другое место, т.к. вроде здесь происходит вызов InitNode для каждого дочернего узла добавленного внутри InitNode.
 

Всего записей: 29 | Зарегистр. 19-02-2007 | Отправлено: 00:43 18-09-2009
G787



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вот тут неплохой мануал по VTV на русском

Всего записей: 1035 | Зарегистр. 04-12-2005 | Отправлено: 04:35 18-09-2009
SALAR

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо ответившим. Действительно, отказался от работы с событием InitNode, заполняю форму в процедуре FormCreate. Тогда все получается.

Всего записей: 101 | Зарегистр. 14-11-2003 | Отправлено: 22:37 23-09-2009
G787



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ кто успел скачать статью по ссылке из моего предыдущего поста ?
http://forum.vingrad.ru/forum/topic-97620.html

Всего записей: 1035 | Зарегистр. 04-12-2005 | Отправлено: 18:05 23-01-2012
druff

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А что с ней случилось?

Всего записей: 402 | Зарегистр. 14-11-2006 | Отправлено: 15:18 26-01-2012
svi73

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А к XE2 кто нибудь прикрутить данный компонент сумел?

Всего записей: 3 | Зарегистр. 25-03-2012 | Отправлено: 22:14 25-03-2012
data man



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
svi73
А в чём проблема с "прикручиванием"?
Судя по логам есть поддержка и 64 бит.

----------
Любой достаточно развитый тролль неотличим от подлинно помешанного на какой-либо идее.
Кекс. Антибиотики. Ламбада.

Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 22:21 25-03-2012
druff

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
svi73
всё работает - качай версию из репозитория

Всего записей: 402 | Зарегистр. 14-11-2006 | Отправлено: 11:47 26-03-2012
svi73

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
На официальном сайте - версия только под XE. XE2 - не поддерживает.
А вот то, что дали - судя по всему докручивается добрыми людьми.
И - сразу ногами не бейте - как скачать из репозитария?

Всего записей: 3 | Зарегистр. 25-03-2012 | Отправлено: 20:27 26-03-2012
data man



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
svi73

Цитата:
судя по всему докручивается добрыми людьми

Ну, owner проекта на гуглокоде Mike Lischke
 

Цитата:
как скачать из репозитария?

Тут же всё расписано.
 
Если коротко:
1. Распаковываем архив куда нибудь, прописываем путь к этой папке
2. Выполняем команду svn checkout http://virtual-treeview.googlecode.com/svn/trunk D:\MyLibs\VirtualTreeView
3. Всё
 
Периодически повторяем пункт 2.

----------
Любой достаточно развитый тролль неотличим от подлинно помешанного на какой-либо идее.
Кекс. Антибиотики. Ламбада.

Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 22:26 26-03-2012
druff

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
svi73
в XE2 есть встроенный SVN клиент (если конечно не была убрана галочка при установке) и  можно открыть через File - Open from version control...  путь указать тот, что выше

Всего записей: 402 | Зарегистр. 14-11-2006 | Отправлено: 10:11 27-03-2012
svi73

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Огромное спасибо. Разобрался.

Всего записей: 3 | Зарегистр. 25-03-2012 | Отправлено: 14:36 27-03-2012
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мои регардсы основателю, да и космонавтам вообще. Очень рад что всё живо и безумно рад, что в XE есть Beyond Compare. Как покупатель этого продукта BC вполне оценил удобство, правда пока пользуюсь традиционным BC.
 
Добавлено:
(платным), считаю что это не вредит никому.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 19:58 27-03-2012 | Исправлено: delover, 21:32 27-03-2012
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delete

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 19:33 03-05-2012 | Исправлено: delover, 19:36 03-05-2012
tarakan19831



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте. Использую Delphi XE 2 и VirtualTreeView.
При использовании сканера штрихкода honeywell 1250g + VirtualTreeView фокус с текущего нода перескакивает на следующий. Т.е. при использовании поиска по штрихкоду со сканера получаю не нужный узел в дереве, а следующий за нужным. При том, что по событию OnKeyPress я пишу

Код:
if Key = #13 then Key := 0;

Подскажите как отключить обработку данных от сканера в VirtualTreeView????

Всего записей: 171 | Зарегистр. 22-11-2009 | Отправлено: 19:32 19-06-2016
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » VirtualTreeView


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru