|
|
|
TVirtualStringTree и данные
|
|||
|---|---|---|---|
|
#18+
Впервые пытаюсь использовать VirtualStringTree, возник вопрос: в руководстве, которое есть в справке и в статьях, которые нашел в интернете, обычно объявляют запись или класс, в котором хранятся данные каждого узла, и присваивают узлам эти данные при создании дерева. А можно ли не делать так, а отображать посторонние данные. Например я планирую два типа узлов: - заказ, с некоторыми характеристиками - элементы заказа со своими характеристиками (название изделия, количество и т.д.). То есть для узлов получаются заметно отличающиеся структуры данных. Данные хранятся и пишутся в БД. Вот выбрать данные из БД, распихать их по узлам, а потом при изменении назад из узлов писать в БД, не лишняя ли это работа? Правда, если отображать данные напрямую из БД, то желателен видимо датасет с местным кешем и с двусторонним движением по записям, т.к. при перерисовке будут запрашиваться разные данные. И может будут постоянные запросы к БД все-таки. Собственно вопрос, кто-нибудь делал или сталкивался с тем, чтобы отображать в компоненте не данные, которые присвоены к записям/объектам, соответствующим узлам, а какие-то данные хранящиеся не в дереве? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2019, 19:39 |
|
||
|
TVirtualStringTree и данные
|
|||
|---|---|---|---|
|
#18+
s62, Загружать данные нужно только при OnExpanded, а никакой проблемы хранить в разных нодах объекты разных классов - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2019, 19:49 |
|
||
|
TVirtualStringTree и данные
|
|||
|---|---|---|---|
|
#18+
asviridenkovs62, Загружать данные нужно только при OnExpanded, а никакой проблемы хранить в разных нодах объекты разных классов - нет.Ну да, точно, размер же, который надо указать, будет 4 байта для любого объекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2019, 19:56 |
|
||
|
TVirtualStringTree и данные
|
|||
|---|---|---|---|
|
#18+
s62Собственно вопрос, кто-нибудь делал или сталкивался с тем, чтобы отображать в компоненте не данные, которые присвоены к записям/объектам, соответствующим узлам, а какие-то данные хранящиеся не в дереве? непонятно, что ты хочешь. Сама концепция VST заключается в заполнении и временном хранении сторонних данных, причем удаление/добавление/изменений данных происходит вручную. Если ты собираешься работать с БД, в любом случае тебе придется использовать кэшированный датасет. При изменении содержимого датасета ты можешь либо добавлять новую порцию данных в VST, либо полностью его перерисовывать. Упомянутое выше событие OnExpanded - это всего лишь частный случай добавления данных в дерево. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2019, 22:53 |
|
||
|
TVirtualStringTree и данные
|
|||
|---|---|---|---|
|
#18+
Докнепонятно, что ты хочешь. Я хочу отображать имеющиеся данные определенным образом, VST такой способ отображения позволяет осуществить, как я понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2019, 23:28 |
|
||
|
TVirtualStringTree и данные
|
|||
|---|---|---|---|
|
#18+
asviridenkov, Док, спасибо за ответы. Еще подумаю. ) Наверное так и придется сделать - "хранить в разных нодах объекты разных классов". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2019, 23:31 |
|
||
|
TVirtualStringTree и данные
|
|||
|---|---|---|---|
|
#18+
s62Докнепонятно, что ты хочешь. Я хочу отображать имеющиеся данные определенным образом, VST такой способ отображения позволяет осуществить, как я понимаю. VST позволяет отображать данные практически любым образом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2019, 23:43 |
|
||
|
TVirtualStringTree и данные
|
|||
|---|---|---|---|
|
#18+
s62Я хочу отображать имеющиеся данные определенным образом, VST такой способ отображения позволяет осуществить, как я понимаю. VST позволяет отображать данные, засунутые туда даже самым проктостоматологическим способом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 00:26 |
|
||
|
TVirtualStringTree и данные
|
|||
|---|---|---|---|
|
#18+
s62То есть для узлов получаются заметно отличающиеся структуры данных. Нет. У VST один набор столбцов для всех узлов, независимо от типа узла. И заголовок для всех улов один. Есть варианты решений. Например, в одном или нескольких столбцах отображать примерно одинаковые по смыслу данные. В картинке ниже такой общий столбец - "название". В дереве 4 вида узлов : корневой (надпись "Пользователи"), пользователь (надпись BASOVAAV(Басов Алла Владимировна)), папки (желтые "папки" с зелеными крестиками) и документы. У документа - множество полей, они отображаются только для узлов с документами. Еще вариант: (будет с след.сообщении). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 00:55 |
|
||
|
TVirtualStringTree и данные
|
|||
|---|---|---|---|
|
#18+
s62, еще вариант. У узлов много разных полей. Решение. Одновременно показываем поля с одинаковым названием, остальные поля показываем при переключении фокуса на данный узел. Пример: отображение структуры Округа Москвы -> Улицы -> Документы. В Москве есть округа: Восточный, Западный, Северный... В каждом округе - свой список улиц. Для выполнения ремонта по каждой улице составляются документы. В картинке ниже курсор находится на узле "Округ". Соответственно, отображаются только свойства узлов типа "Округ", а также общие данные для узлов всех типов - в самом левом столбце: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 01:03 |
|
||
|
TVirtualStringTree и данные
|
|||
|---|---|---|---|
|
#18+
Переводим курсор на узел типа "Улица". Состав столбцов поменялся, теперь он соответствует набору полей узла "Улица". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 01:05 |
|
||
|
TVirtualStringTree и данные
|
|||
|---|---|---|---|
|
#18+
Переводим курсор на узел типа "Документа". Состав столбцов снова, теперь он соответствует набору полей узла "Документ". Так как набор полей для каждого типа может быть очень велик, они все не помещаются при отображении дерева. Поэтому набор полей текущего узла отображается справа, вертикально, по типу редактора свойств Delphi. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 01:09 |
|
||
|
TVirtualStringTree и данные
|
|||
|---|---|---|---|
|
#18+
Все это - дьявольски неудобно кодить, и я не вполне уверен, что эти удобно пользоваться. Поэтому я предлагаю вместо VST использовать TcxGrid. Там допускаются показ разнотипных сущностей ОДНОВРЕМЕННО, для каждого уровня - свой набор полей и свои заголовки: Или TDBGeridEh: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 01:15 |
|
||
|
TVirtualStringTree и данные
|
|||
|---|---|---|---|
|
#18+
s62, Еще вариант. Все данные всех узлов отображаются одновременно, каждый - со своим набором полей. В заголовке отображаются только поля, которые есть у текущей записи. Пример: выбрана запись №24: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 01:37 |
|
||
|
TVirtualStringTree и данные
|
|||
|---|---|---|---|
|
#18+
а теперь выбрана запись №17, видно, что структура заголовка изменилась: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 01:39 |
|
||
|
TVirtualStringTree и данные
|
|||
|---|---|---|---|
|
#18+
Тоже решение "так себе", зато не требуется отдельного места под отдельный заголовок для каждого типа записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 01:41 |
|
||
|
TVirtualStringTree и данные
|
|||
|---|---|---|---|
|
#18+
Фэйтл Эра, Фэйтл ЭраНет. У VST один набор столбцов для всех узлов, независимо от типа узла.Ну так столбцы одинаковые, а данные всё равно разные у узлов разных уровней. Я предполагал примерно так, как на картинке в первом сообщении, только 2 уровня узлов. Как по мне, лучше всего для моей ситуации - то, что с TcxGrid. Но это ведь, как я понимаю, платный компонент. Так что наверное надо разбираться с VST. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 03:39 |
|
||
|
TVirtualStringTree и данные
|
|||
|---|---|---|---|
|
#18+
s62Но это ведь, как я понимаю, платный компонент. Так что наверное надо разбираться с VST. Если ты собираешься зарабатывать на софте - нужно использовать качественные готовые компоненты. Времена, когда TVirtualTreeView был хорош и эксклюзивен - прошли. Хорош он был не своей бесплатностью, а возможностью кастомизации и хорошей скростью. Теперь, например, есть отличный TcxTreeList. Это деревце имеет уже встроенные контролы для редактирования и возможность группировки столбов в бэнды, и есть стандартный способ запитать его от специального кастомного источника данных, view's в TcxGrid. Хотя бы варезные DevExpress попробуй, для оценки. Потом купишь, если понравится. Или продемонстрируешь руководству возможности, что тебе купили. А TVirtualTreeView - будешь пилить долго. Местные хвастуны тут часто показывают, что они с ним сделали, "за годы". Всё (без исключения) - жалкое подобие по сравнению с базовыми возможностями TcxTreeList. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 04:24 |
|
||
|
TVirtualStringTree и данные
|
|||
|---|---|---|---|
|
#18+
s62Я хочу отображать имеющиеся данные определенным образом не используй VirtualStringTree (сделанного ИМЕННО для того, чтобы тебе самому не надо было ничего рисовать) используй его предка VirtualDrawTree и рисуй всё что надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 11:20 |
|
||
|
TVirtualStringTree и данные
|
|||
|---|---|---|---|
|
#18+
кроме цены "девки" хороши неимоверной навороченностью кода, если что-то пойдёт не так - то без саппорт ни хрена не разберешься. в 4-х девках еще можно было самому разбираться, в 6-х уже труба. нет, если на кастомизацию девок потратить те же "за годы", как на кастомизацию VTV, тогда да, но тогда зачем? в том же их гриде понадобилось мне сделать пользовательскую сортировку сразу по нескольким столбцам, чтобы у одних столбцов можно было направление разворачивать, а у других - только Ascending или unsorted казалось бы - та самая "базовая возможность", только с небольшим ограничением. ответ "девок" - напишите вашу собственную сортировку грида, полностью, вместо базовой. Возьмите ((список методов)), скопипастьте в вашу форму (в каждую, где надо) и вставьте туда ваши ограничения. охренеть кастомизация, блджад. пришлось патч делать, чтобы параметры сортировки из метода в метод гонялись не через широкие (т.е. хрен расширишь, без переписывания кода, про скорость молчу - на неё "девки" давно забили) списки параметров, а через record (указатель). И соотв. был у грида ивент по исправлению режима сортировки перед началом сортировки. и да, VTV я тоже когда-то патчил, и это было гораздо проще. Причем VTV пришлось патчить не для ограничения/настройки "базовой функции", а для добавления новой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 11:28 |
|
||
|
TVirtualStringTree и данные
|
|||
|---|---|---|---|
|
#18+
Фэйтл Эраs62Но это ведь, как я понимаю, платный компонент. Так что наверное надо разбираться с VST. Если ты собираешься зарабатывать на софте - нужно использовать качественные готовые компоненты. Времена, когда TVirtualTreeView был хорош и эксклюзивен - прошли. Хорош он был не своей бесплатностью, а возможностью кастомизации и хорошей скростью. ... Нет, это не для заработка (продаж), это в программе учета, которая уже сколько-то лет работает в нашей компании (небольшой), пытаюсь добавить еще один блок. Там есть и организационные моменты, как обычно, и разное. Пока что не вижу места, кроме вот одного, чтобы применить этот компонент. Так что $800 мне скорей всего никто не даст, да и для использования в одном месте не факт, что это оправданная затрата. Пиратским софтом я принципиально не пользуюсь, кроме случаев, когда обстоятельства (по работе) сильно подталкивают. Хватает бесплатного и купленного. Но да, хотя я таким и не занимался, но согласен, что если регулярно писать софт на продажу, то имеет смысл использовать хорошие платные компоненты, если есть в них нужда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 12:35 |
|
||
|
TVirtualStringTree и данные
|
|||
|---|---|---|---|
|
#18+
s62, >>>хотя я таким и не занимался Нет, был период, когда более-менее регулярно клиенты компании заказывали софт для наших изделий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 12:42 |
|
||
|
TVirtualStringTree и данные
|
|||
|---|---|---|---|
|
#18+
Фэйтл ЭраВсё (без исключения) - жалкое подобие по сравнению с базовыми возможностями TcxTreeList. да-да-да, наемный водитель Майбаха сейчас всех будет убеждать покупать машины только этого класса Ariochнет, если на кастомизацию девок потратить те же "за годы", как на кастомизацию VTV, тогда да, но тогда зачем? +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 14:36 |
|
||
|
TVirtualStringTree и данные
|
|||
|---|---|---|---|
|
#18+
s62Пока что не вижу места, кроме вот одного, чтобы применить этот компонент. Да хотя бы редакторы девекспресовские использовать для редактирования данных в твоем vtv, вместо "стандартных". :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2019, 17:03 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39780136&tid=2039726]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
424ms |
get topic data: |
15ms |
get forum data: |
4ms |
get page messages: |
88ms |
get tp. blocked users: |
2ms |
| others: | 201ms |
| total: | 770ms |

| 0 / 0 |
