Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26151
Рейтинг: 2127
#1: 2008-09-26 10:07:24 ЛС | профиль | цитата
Я так понял, что MRA -- это Mail.Ru Агент. Запустил пример MRA, и он мне написал, что компонента MRA_ChangeStatus нет. Дейcтвительно, на SVN нет файла MRA_ChangeStatus.ini
карма: 22

0
Ответов: 5227
Рейтинг: 587
#2: 2008-09-26 10:17:08 ЛС | профиль | цитата
nesco, а говорил что не экстросенс
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Администрация
Ответов: 15295
Рейтинг: 1519
#3: 2008-09-26 10:24:21 ЛС | профиль | цитата
ну на работу примера наличие этого элемента никак не сказывается
------------ Дoбавленo:

Кроме того видимо придется делать элемент TreeView с иным способом обработки данных, а то существующее решение на этом примере демонстрирует полную не приспособленность для подобного рода задач.
карма: 27
1
Голосовали:Konst
Разработчик
Ответов: 26151
Рейтинг: 2127
#4: 2008-09-26 10:28:55 ЛС | профиль | цитата
Dilma писал(а):
ну на работу примера наличие этого элемента никак не сказывается

Ну это и так понятно, что этот компонент для показа изменения статуса. Ну а я написал пост для констатации факта отсутствия части компонента на SVN.
------------ Дoбавленo:

Dilma писал(а):
придется делать элемент TreeView с иным способом обработки данных

А подробнее можно -- как преполагается проводить обработку
карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#5: 2008-09-26 16:01:28 ЛС | профиль | цитата
nesco писал(а):
А подробнее можно -- как преполагается проводить обработку

для начала о том, почему сейчас элементом TreeView очень сложно пользоваться при активной обработки данных, находящихся в нем.
1) невозможно построение дерева без знания номера родительского узла, который к тому же всегда меняется
2) после построения дерева практически нереально из схемы обратиться к какому-то конкретному узлу(требуется громоздкая операция вычисления его индекса)
3) к узлу невозможно привязать никаких дополнительных данных
4) отсутствие поиска
+ еще несколько не столь губительных, но неприятных моментов связанных со сложностью обработки дерева его нынешнем виде

Как можно бы было по другому сделать работу.
Для начала рабочей единицей данных будет МТ поток(кортеж).
Далее делаем св-ва элемента которые указывают какой элемент кортежа куда идет. С ходу видятся такие св-ва:
IconIndex - номер звена кортежа, который отвечает за иконку
CaptionIndex - номер звена кортежа, который отвечает за текст элемета дерева
DataIndex - номера звеньев кортежа, которые выдавать в поток при выборе элемента дерева
GroupIndex - номер звена кортежа, который отвечает за ID родителя нового элемента дерева
ID_Index - номер звена кортежа, который однозначно определяет элемент дерева(т.е. некое уникальное число или строка)

Примерно такого плана методы:
doAddNode(<кортеж>) - добавить элемент
doFindNode(<кортеж>) - поиск элемента в дереве
doSortNode(<кортеж>) - сортировка дочерних элементов указанного элемента
doDeleteNode(<кортеж>) - удаление элемента
doChangeNode(<кортеж>) - изменение элемента
....
onNodeClick(<кортеж>)
onNodeDblClick(<кортеж>)
onNodeBeginDrag(<кортеж>) - начало перетаскивания элемента
onNodeEndDrag(<кортеж>) - окончание перетаскивания
onNodeNotFound(<кортеж>) - родительский узел не найден

Принцип работы.
Например определяем св-ва так:

IconIndex = 1
CaptionIndex = 0
DataIndex =
GroupIndex = 2
ID_Index = 3

Тогда добавление сведется к вызову метода doAddNode с такими скажем данными

doAddNode("Parent node1 name", 0, -1, 1, "какие-то пользовательские данные")
doAddNode("Node1 name", 1, 1, 2, "какие-то пользовательские данные")
doAddNode("Node2 name", 1, 1, 3, "какие-то пользовательские данные")
doAddNode("Parent node2 name", 0, -1, 4, "какие-то пользовательские данные")
doAddNode("Node1 name", 2, 4, 5, "какие-то пользовательские данные")
doAddNode("Node2 name", 2, 4, 6, "какие-то пользовательские данные")
Поиск элемента с ID = 3

doFindNode("", -1, -1, 3, "")
Поиск элементов, с Icon = 2

doFindNode("", -1, 2, -1, "")
Смена заголовка элемента и его иконки с ID = 2

doChangeNode("New node name", 0, -1, 2, "")

очевидно все эти команды сделаны на рассыпухе из элементов и впринципе подход позволяет формировать дерево как угодно при этом не нагромаждая схему кучей связей. Кроме того база может быть легко расширена для упрощения многих распространенных задач. Так же думаю понятно, что это не замена стандартного элемента. Это всего лишь альтернативный элемент для отображения древовидной структуры данных
карма: 27
1
Голосовали:Konst
Разработчик
Ответов: 26151
Рейтинг: 2127
#6: 2008-09-26 16:07:41 ЛС | профиль | цитата
Dilma писал(а):
Это всего лишь альтернативный элемент для отображения древовидной структуры данных

Надо будет подумать о реализации. Единственное, что у меня не получилось, так это перетаскивание, сколько не пытался.
карма: 22

0
Ответов: 902
Рейтинг: 27
#7: 2008-09-26 21:43:34 ЛС | профиль | цитата
Dilma,
Это всего лишь альтернативный элемент для отображения древовидной структуры данных

А в скором времени его ожидать можно?
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Разработчик
Ответов: 26151
Рейтинг: 2127
#8: 2008-09-27 01:58:21 ЛС | профиль | цитата
juk писал(а):
А в скором времени его ожидать можно?

Только не доставай, и будет тэбе счастье
карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#9: 2008-09-27 02:03:45 ЛС | профиль | цитата
в скором
карма: 27
1
Голосовали:Konst
Разработчик
Ответов: 26151
Рейтинг: 2127
#10: 2008-09-27 02:05:27 ЛС | профиль | цитата
Dilma, ты уже взялся за него или мне начать
карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#11: 2008-09-27 02:15:16 ЛС | профиль | цитата
первое. Еще мне пригодится в интерфейсе TIIconsManager прямой доступ к PImageList для того, чтобы передать в конструктор TreeView непосредственную ссылку на библиотеку иконок.
карма: 27
1
Голосовали:Konst
Разработчик
Ответов: 26151
Рейтинг: 2127
#12: 2008-09-27 02:18:55 ЛС | профиль | цитата
Dilma писал(а):
Еще мне пригодится в интерфейсе TIIconsManager прямой доступ к PImageList

А как нужно, точкой, или функцией менеджера
карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#13: 2008-09-27 02:21:04 ЛС | профиль | цитата

#pas
TIIconsManager = record
draw:function(Sender: PObj; DC: HDC; const Rect: TRect; Shift: integer; Idx: integer): Boolean of object;
imgsz:function: byte of object;
fullsz:function: integer of object;
iconList:function : PImageList; // <---
end;
карма: 27
1
Голосовали:Konst
Разработчик
Ответов: 26151
Рейтинг: 2127
#14: 2008-09-27 02:32:49 ЛС | профиль | цитата
Добавлено. Проверь, если что не так, то переправлю
карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#15: 2008-09-27 21:34:53 ЛС | профиль | цитата
все так:


пока переделывал схему на новое дерево, наткнулся на то, что PopupMenu у нас все еще не использует IconsManager. Кроме того туда тоже напрашивается такая же система с картежами - вся разница лишь будет в наборе индексов(Caption, Icon, ID, Enabled, Checked, Default).
карма: 27
1
файлы: 1hiasm_mra.png [13.2KB] [226]
Голосовали:Konst
Сообщение
...
Прикрепленные файлы
(файлы не залиты)