Вверх ↑
Этот топик читают: Гость
Ответов: 699
Рейтинг: 145
#31: 2024-01-23 13:20:53 ЛС | профиль | цитата
sla8a писал(а):
TreeView для этого лучше всего подойдёт

Я бы посоветовал использовать TreeViewTrain. Можно хранить все данные не в списках, а в картеже. Неплохой пример в справке.

Редактировалось 1 раз(а), последний 2024-01-23 13:31:16
карма: 15

0
Ответов: 109
Рейтинг: 0
#32: 2024-01-23 14:16:35 ЛС | профиль | цитата
Gunta, посмотрел пример. Я так понимаю, это просто подставление заранее записанных параметров по сути. К сожалению в моей работе такое не очень подходит. Пример от Sla8a весьма интересен, возможно это будет следующей версией.
Всем спасибо большое за помощь.
карма: 1

0
Ответов: 2200
Рейтинг: 673
#33: 2024-01-23 15:16:22 ЛС | профиль | цитата
Serascer писал(а):
Я так понимаю, это просто подставление заранее записанных параметров по сути.
Не обязательно, можно с пустыми полями.
карма: 11

0
Ответов: 109
Рейтинг: 0
#34: 2024-01-23 16:12:38 ЛС | профиль | цитата
Подскажите, а как-то можно в TreeView сделать так, чтобы какой-то строчке я сам назначал индекс?
У меня вся проблема состоит в том, что я постепенно добавляю новые панели для описания товара. И они идут не подряд ведь. Т.е. в Комплектующие ПК я могу добавить Серверные комплектующие, а завтра в Бытовую технику еще пару товаров, а потом опять в Комплектующие ПК пару товаров. И мне приходится заново переделывать порядок связей в IndexToChanel.
Можно было бы использовать вариант от sla8a, но что-то мне не нравится как происходит переключение между пунктами списка. Например в панельке Кабель у меня больше 100 элементов, что-то мне кажется их отрисовка будет ну очень долгой, тем более их еще нужно ведь и разместить в нужном порядке. Так что этот вариант пока не подходит.

Редактировалось 1 раз(а), последний 2024-01-23 16:20:14
карма: 1

0
Ответов: 699
Рейтинг: 145
#35: 2024-01-23 16:36:32 ЛС | профиль | цитата
Serascer писал(а):
Подскажите, а как-то можно в TreeView сделать так, чтобы какой-то строчке я сам назначал индекс?

Зачем? Всё гораздо проще. (Схема не моя)

Add(MainForm,10233920,35,49)
{
Width=930
Height=681
Position=1
link(onCreate,4152366:doLoadTree,[])
}
Add(TVT_AddNode,5460754,553,210)
{
TreeView="asdf"
link(onAddNode,14492509:doWork,[])
link(onAddFailed,5555223:doWork,[(597,223)(597,237)])
}
Add(Button,10942384,287,343)
{
Left=435
Top=175
Caption="Add"
link(onClick,8532764:doSeparateMT,[])
}
Add(Edit,13531228,399,287)
{
Left=345
Top=150
Width=145
Text="Пупкин"
}
Add(Label,13983827,35,126)
{
Left=345
Top=130
Width=144
Height=17
Caption="Реферал"
}
Add(Label,9661684,84,126)
{
Left=345
Top=60
Width=145
Height=17
Caption="Добавить пользывателя"
}
Add(Message,8175173,84,231)
{
Message="Ошибка"
Caption="Error"
}
Add(TreeViewTrain,2363091,245,77)
{
Width=340
Height=654
Align=1
Name="asdf"
Layout="main"
WidthScale=100
IconsManager="Icons"
DragDrop=0
ParentIDIndex=2
IDIndex=1
IconIndex=3
UseHashMap=0
Point(NextID)
}
Add(Edit,14516701,469,63)
{
Left=345
Top=80
Width=145
Text="Вася"
}
Add(Button,16497013,420,210)
{
Left=435
Top=105
Caption="Add"
link(onClick,2274429:doAdd,[])
}
Add(TVT_SaveTree,14143844,84,189)
{
TreeView="asdf"
FileName="bd.tree"
Delimiter=";"
}
Add(TVT_LoadTree,4152366,84,63)
{
TreeView="asdf"
FileName="bd.tree"
Delimiter=";"
}
Add(Button,5862129,196,217)
{
Left=350
Top=5
Caption="Delete"
Data=Integer(-1)
link(onClick,11753646:doDeleteNode,[])
}
Add(TVT_DeleteNode,11753646,245,217)
{
TreeView="asdf"
link(onDeleteNode,14861660:doWork,[])
link(onDeleteFailed,10180734:doWork,[(285,230)(285,244)])
link(Data,15939429:Var2,[])
}
Add(LineBreakEx,14492509,609,210)
{
Caption="save"
}
Add(LineBreakEx,8484474,28,189)
{
Caption="save"
Type=1
link(OnEvent,14143844:doSaveTree,[])
}
Add(LineBreakEx,5555223,609,231)
{
Caption="error"
}
Add(LineBreakEx,12127519,28,231)
{
Caption="error"
Type=1
link(OnEvent,8175173:doMessage,[])
}
Add(LineBreakEx,10180734,301,238)
{
Caption="error"
}
Add(LineBreakEx,14861660,301,217)
{
Caption="save"
}
Add(MT_AddData,2274429,469,210)
{
Count=4
link(onAdd,6464810:doEvent1,[])
link(Data1,14516701:Text,[])
link(Data2,6076904:Var3,[(482,201)(468,201)(468,173)])
link(Data3,3278713:Value,[])
link(Data4,7398153:Value,[(496,198)(531,198)])
}
Add(Memory,3278713,483,147)
{
Default=Integer(-1)
AddHint(5,-19,24,13,Default)
}
Add(Memory,7398153,525,147)
{
Default=Integer(0)
AddHint(5,-19,21,13,Default)
}
Add(TVT_SelectNode,13298702,595,259)
{
TreeView="asdf"
}
Add(Hub,6464810,518,210)
{
InCount=2
link(onEvent1,5460754:doAddNode,[])
link(onEvent2,14094028:doSeparateMT,[(542,223)(542,265)])
}
Add(MT_MultiData,14094028,553,259)
{
From=1
Count=1
link(onData1,13298702:doSelectNode,[])
}
Add(MT_AddData,10298679,399,343)
{
Count=4
InputMT=3
link(onAdd,6464810:doEvent2,[(508,349)(508,223)])
link(Data1,13531228:Text,[])
link(Data2,6076904:Var2,[])
link(Data4,12975966:Value,[(426,331)(447,331)])
}
Add(Memory,12975966,441,287)
{
Default=Integer(0)
AddHint(5,-19,21,13,Default)
}
Add(MT_MultiData,8532764,350,343)
{
From=1
Count=1
Point(Data)
link(onData1,10298679:doAdd,[])
link(Data,15939429:Var1,[(356,177)])
}
Add(GetDataEx,15939429,245,172)
{
link(Data,2363091:Select,[])
}
Add(GetDataEx,6076904,406,168)
{
Angle=3
link(Data,2363091:NextID,[(258,173)])
}

карма: 15

0
Ответов: 109
Рейтинг: 0
#36: 2024-01-23 16:51:29 ЛС | профиль | цитата
Gunta, вообще не то ) Кажется вы не поняли о чём я. Я делаю программу для составления описания товара для нашего интернет магазина. Под каждый вид товара я делаю свою панельку. Я сделал под все основные виды товаров панельки (мы компьютерный магазин), но иногда менеджеры просят обработать новый вид товара, например бытовую технику, там сотни позиций. И конечно же они там довольно разные по количеству свойств. И я делаю новую панельку опять. Но мне надо как-то же добавить её в общий список. До этого я использовал TreeView как раз для этого, там удобно делать группы товаров. Но очень неудобно что-то добавлять к уже существующей группе. Т.е. вот первыми у меня идут компьютерные комплектующие, ниже периферия, ниже оргтехника и потом бытовая техника. Это всё подгруппы и вот уже в них я постепенно добавляю какие-то новые панельки товаров. Приходится добавлять в IndexToChanel новую связь и ручками переносить все связи на один вниз. Как заметил sla8a у меня там уже 89 связей )) ну куда деваться, столько панелек надо. И будет еще больше в будущем. Вот мне интересно, можно как-то строчке в TreeView назначить принудительно индекс?

Другими словами, чтобы я могу между 5 и 6 строчками в TreeView добавить еще одну, но индекс ей назначить 90 к примеру.

Редактировалось 1 раз(а), последний 2024-01-23 17:10:08
карма: 1

0
Ответов: 2200
Рейтинг: 673
#37: 2024-01-23 17:30:35 ЛС | профиль | цитата
Serascer, при желании туда и картинку с видео засунуть можно не то что нужный индекс
Add(TreeViewTrain,12134240,385,301)
{
Left=10
Top=5
Width=185
Height=405
Name="TVT"
CaptionIndex=1
ParentIDIndex=2
IconIndex=3
Point(NextID)
link(onClick,13825584:doEvent1,[])
}
Add(MainForm,15965189,378,189)
{
Width=745
Height=472
Position=1
link(onCreate,2323490:doEnum,[])
}
Add(TVT_AddNode,5460754,560,196)
{
TreeView="TVT"
}
Add(StrList,12050381,434,147)
{
Strings=#61:0;Материнская плата;-1;-1;333;Тут напишу что хочу;345-345-234|42:1;Память;-1;-1;415;Важно!!!!;453-647567-65|47:2;Блок питания;-1;-1;2;Не удалять;4567-234-3452|40:3;Монитор;-1;-1;3;Временное;64-5462-2435|
}
Add(ArrayEnum,2323490,448,203)
{
link(onItem,14999606:doMT,[])
link(Array,12050381:Array,[])
}
Add(MT_String,14999606,504,196)
{
link(onResult,5460754:doAddNode,[])
}
Add(FormatStr,13893592,476,301)
{
DataCount=8
Mask="ID элемента: %1\r\nНазвание: %2\r\nID родителя: %3\r\nИндекс иконки: %4\r\nИндекс для отображения нужной панели: %5\r\nЗаметки: %6\r\nТелефоны: %7"
link(onFString,9404388:doText,[])
}
Add(Memo,9404388,553,280)
{
Left=200
Top=30
Width=500
Height=375
}
Add(Hub,13825584,434,301)
{
link(onEvent1,13893592:doString,[])
link(onEvent2,4790543:doSeparateMT,[(458,314)(458,356)])
}
Add(MT_MultiData,4790543,476,350)
{
From=4
Count=1
link(onData1,4430241:doText,[])
}
Add(Label,7305308,581,350)
{
Left=210
Top=10
Width=147
Height=17
Caption="Индекс нужной мне панели:"
}
Add(Edit,4430241,532,350)
{
Left=360
Top=5
}
Можно на столько упростить написание нужной панели с данными, что достаточно будет ввести пару строчек, вместо перетягивания кучи связей и лишнего дополнения схемы сотнями элементов.
Serascer писал(а):
мне не нравится как происходит переключение между пунктами списка. Например в панельке Кабель у меня больше 100 элементов, что-то мне кажется их отрисовка будет ну очень долгой
Вот это не понял. Что за панелька Кабель с 100 элементами? Что именно не нравиться в переключении между списками? Выложенная мной схема это только набросок, чтоб показать что можно не только заранее создавать весь интерфейс, но и делать его в реальном времени по запросу.

Редактировалось 6 раз(а), последний 2024-01-23 18:04:07
карма: 11

0
Ответов: 109
Рейтинг: 0
#38: 2024-01-23 17:45:26 ЛС | профиль | цитата
sla8a, хм, спасибо ) А почему у меня палочки вместо букв слева, где дерево?

карма: 1

0
Ответов: 2200
Рейтинг: 673
#39: 2024-01-23 17:50:09 ЛС | профиль | цитата
Serascer, не могу знать ) у меня такого нет )

Попробуй еще раз скопировать схему, я ее обновлял, может из-за этого
карма: 11

0
Ответов: 109
Рейтинг: 0
#40: 2024-01-23 17:53:59 ЛС | профиль | цитата
sla8a, не, все равно палочки эти ( И выглядит дерево иначе, странно.
карма: 1

0
Ответов: 2200
Рейтинг: 673
#41: 2024-01-23 18:02:10 ЛС | профиль | цитата
Вот адрес SVN (место где находятся файлы последних версий элементов) http://svn.hiasm.com/packs/
Вот это код элемента дерева (можно скачать как файл pas): http://svn.hiasm.com/packs/delphi/code/hiTreeViewTrain.pas
Сравни его с тем что у тебя в папке HiAsm\Elements\delphi\code\ (хоть по размеру)
Может что с элементом самим, хотя странно.
А схему точно пробовал заново с сайта скопировать?

Редактировалось 1 раз(а), последний 2024-01-23 18:04:34
карма: 11

0
Ответов: 109
Рейтинг: 0
#42: 2024-01-23 18:07:30 ЛС | профиль | цитата
sla8a, спасибо, заменил файл и все нормально стало
карма: 1

0
Ответов: 2200
Рейтинг: 673
#43: 2024-01-23 18:16:13 ЛС | профиль | цитата
Значит HiAsm староват, желательно обновиться или как минимум если планируете использовать этот элемент, то обновите и все его дочерние. Начинаются на hiTVT_ (11 штук). Да и ini файлы обновить не мешало бы, лежат тут:http://svn.hiasm.com/packs/delphi/conf/ покласть тут HiAsm\Elements\delphi\conf\ сам TreeViewTrain.ini и 11 штук его TVT_. А то потом будем гадать всем форумом почему не работает )
карма: 11

0
Ответов: 109
Рейтинг: 0
#44: 2024-01-23 18:16:46 ЛС | профиль | цитата
sla8a писал(а):
Вот это не понял. Что за панелька Кабель с 100 элементами? Что именно не нравиться в переключении между списками? Выложенная мной схема это только набросок, чтоб показать что можно не только заранее создавать весь интерфейс, но и делать его в реальном времени по запросу.

Для описания кабелей у меня там огромная куча галочек разных, штук 70 наверное точно. А при переключении между списками дёргаются все элементы, как будто отрисовываются.
карма: 1

0
Ответов: 2200
Рейтинг: 673
#45: 2024-01-23 18:24:39 ЛС | профиль | цитата
Serascer, лучше схемой покажи.
карма: 11

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)