Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Альтернативный TreeView  [new]
Aniskin
Member

Откуда:
Сообщений: 303
Запилил альтернативный TreeView. Решил выложить в открытый доступ, может быть кому-нибудь пригодиться. Писал под свои конкретные нужды, поэтому исходный код достаточно своеобразен.

+ Картинка
Картинка с другого сайта.


Смотреть здесь.
18 сен 18, 13:48    [21678093]     Ответить | Цитировать Сообщить модератору
 Re: Альтернативный TreeView  [new]
rgreat
Member

Откуда:
Сообщений: 4584
С виду прикольно. Но не понятно. Твое - это то что слева?
Что умеет кроме рисования?
18 сен 18, 14:28    [21678184]     Ответить | Цитировать Сообщить модератору
 Re: Альтернативный TreeView  [new]
Aniskin
Member

Откуда:
Сообщений: 303
rgreat
Что умеет кроме рисования?

А что нужно уметь? По сути библиотека просто эмулирует API стандартного виндового контрола TreeView. И стандартный дельфовый TTreeView думает, что использует виндовой класс TreeView. Т.е. все что может обычный TTreeView - может и альтернативный (вру конечно, не все, я не полностью реализовал API, может позднее доведу до ума).
18 сен 18, 14:38    [21678198]     Ответить | Цитировать Сообщить модератору
 Re: Альтернативный TreeView  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 10642
Aniskin,

Таскать элементы можно?

И есть ли смысл в иконках раскрытия узла?
18 сен 18, 15:08    [21678257]     Ответить | Цитировать Сообщить модератору
 Re: Альтернативный TreeView  [new]
Aniskin
Member

Откуда:
Сообщений: 303
_Vasilisk_
Таскать элементы можно?
А это можно делать в обычном TTreeView?

_Vasilisk_
И есть ли смысл в иконках раскрытия узла?
При нажатии на них происходит открытие/закрытие (как и в обычном TTreeView).
18 сен 18, 15:16    [21678271]     Ответить | Цитировать Сообщить модератору
 Re: Альтернативный TreeView  [new]
Aniskin
Member

Откуда:
Сообщений: 303
_Vasilisk_
И есть ли смысл в иконках раскрытия узла?
И они убираются обычным для TTreeView путем - свойством ShowButtons.
18 сен 18, 15:28    [21678288]     Ответить | Цитировать Сообщить модератору
 Re: Альтернативный TreeView  [new]
Dimonka
Member

Откуда:
Сообщений: 1125
Я к примеру с трудом могу себе представить тех, кто реально пользуется TTreeView, потому что после TcxTreeView сложно захотеть пользоваться чем-то другим.
Была ещё одна забавная штука VirtualTreeView, на которой, если не ошибають, была построена часть интерфейса самого Delphi.

По поводу данного компонента:
Выглядит так себе, аля Windows 95.

Было бы круто, если бы элементы графа можно было двигать и рисовалось всё как-нибудь более прилично (gdi+).
Непонятно зачем соединяешь корневые элементы между собой?
Ну и ещё можно было бы делить элементы графика на секции - заголовок/описание.

Это первое, что приходит в голову.

А вообще молодец, что делишься. Таких как ты тут не так много. :-)
18 сен 18, 15:49    [21678320]     Ответить | Цитировать Сообщить модератору
 Re: Альтернативный TreeView  [new]
Aniskin
Member

Откуда:
Сообщений: 303
Dimonka
Я к примеру с трудом могу себе представить тех, кто реально пользуется TTreeView, потому что после TcxTreeView сложно захотеть пользоваться чем-то другим.
Если TcxTreeView является наследником TTreeView, то можно легким движением руки добавить в TcxTreeView такой же вид.

Dimonka
Выглядит так себе, аля Windows 95.
Цели сделать гламурненько не ставилось :)

Dimonka
Было бы круто, если бы элементы графа можно было двигать
Круто, но зачем?

Dimonka
и рисовалось всё как-нибудь более прилично
Расшифруй мысль.

Dimonka
Непонятно зачем соединяешь корневые элементы между собой?
Настраивается, аналогично обычному TTreeView.
18 сен 18, 15:58    [21678332]     Ответить | Цитировать Сообщить модератору
 Re: Альтернативный TreeView  [new]
rgreat
Member

Откуда:
Сообщений: 4584
Aniskin,

Антиалиасинг кривых бы добавить.

Что за многострочный текст, которого нет в оригинале?
18 сен 18, 16:24    [21678372]     Ответить | Цитировать Сообщить модератору
 Re: Альтернативный TreeView  [new]
rgreat
Member

Откуда:
Сообщений: 4584
Aniskin
rgreat
Что умеет кроме рисования?

А что нужно уметь? По сути библиотека просто эмулирует API стандартного виндового контрола TreeView. И стандартный дельфовый TTreeView думает, что использует виндовой класс TreeView. Т.е. все что может обычный TTreeView - может и альтернативный (вру конечно, не все, я не полностью реализовал API, может позднее доведу до ума).
чекбоксы, мультиселект, stateimage?
18 сен 18, 16:27    [21678378]     Ответить | Цитировать Сообщить модератору
 Re: Альтернативный TreeView  [new]
Aniskin
Member

Откуда:
Сообщений: 303
rgreat
Антиалиасинг кривых бы добавить.

Где то можно подсмотреть реализацию?

rgreat
Что за многострочный текст, которого нет в оригинале?
Если сделать

TreeView.AddChild(ATreeView.Items[0], '3' + sLineBreak + 'lines' + sLineBreak + 'item');

то виндовый treeview отобразит только первую строку многострочного текста.
18 сен 18, 16:30    [21678382]     Ответить | Цитировать Сообщить модератору
 Re: Альтернативный TreeView  [new]
Aniskin
Member

Откуда:
Сообщений: 303
чекбоксы - в планах есть
мультиселект - обдумаю
stateimage - реализовано
18 сен 18, 16:32    [21678383]     Ответить | Цитировать Сообщить модератору
 Re: Альтернативный TreeView  [new]
L1G
Member

Откуда:
Сообщений: 80
как-то давно я тоже сделал свой treeview 'from scratch' (не основанный на виндовом, всё делает сам).
т.к. был только интерес проверить скорость на миллионе узлов или типа того и не было реальной нужды его применять - остался в зародышевом состоянии.
но код простой, если что - можно на его основе что-то более тяжелое делать.
делал еще для семерки, так что для юникода может потребоваться адаптация.

не из желания влезть в конкуренцию с ТС, но сугубо для развития темы - он там:
https://github.com/L-G-/Delphi-Code-Examples
18 сен 18, 16:51    [21678422]     Ответить | Цитировать Сообщить модератору
 Re: Альтернативный TreeView  [new]
rgreat
Member

Откуда:
Сообщений: 4584
Aniskin
Где то можно подсмотреть реализацию?

https://docs.microsoft.com/en-us/windows/desktop/gdiplus/-gdiplus-antialiasing-with-lines-and-curves-about
18 сен 18, 19:01    [21678612]     Ответить | Цитировать Сообщить модератору
 Re: Альтернативный TreeView  [new]
Котовасия
Member

Откуда:
Сообщений: 1187
Aniskin,
с какой конкретной целью создавался этот контО'л?
18 сен 18, 20:02    [21678692]     Ответить | Цитировать Сообщить модератору
 Re: Альтернативный TreeView  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 2969
в целом хорошо. gdi+ в помощь для анти-альязинга. не смотрел, как у тебя там линии рисуются, но gdi+ умеет их сам такие рисовать с альязингом сразу.
18 сен 18, 21:22    [21678783]     Ответить | Цитировать Сообщить модератору
 Re: Альтернативный TreeView  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 2969
ключи для поиска: TGPGraphics, SetSmoothingMode, TGPSolidBrush, DrawCurve, DrawLines, TGPPen
18 сен 18, 21:26    [21678787]     Ответить | Цитировать Сообщить модератору
 Re: Альтернативный TreeView  [new]
DimaBr
Member

Откуда:
Сообщений: 10781
Судя по скрину, очень неэкономично расходуется прстранство
18 сен 18, 21:40    [21678796]     Ответить | Цитировать Сообщить модератору
 Re: Альтернативный TreeView  [new]
rgreat
Member

Откуда:
Сообщений: 4584
DimaBr
Судя по скрину, очень неэкономично расходуется прстранство
Явных косяков не видно. Вкусовщина у тебя.
18 сен 18, 21:49    [21678800]     Ответить | Цитировать Сообщить модератору
 Re: Альтернативный TreeView  [new]
DimaBr
Member

Откуда:
Сообщений: 10781
Сравниваем размеры одних и тех же данных и раскрытых веток

К сообщению приложен файл. Размер - 67Kb
18 сен 18, 22:01    [21678804]     Ответить | Цитировать Сообщить модератору
 Re: Альтернативный TreeView  [new]
rgreat
Member

Откуда:
Сообщений: 4584
DimaBr,

Доктор, когда я вот вот так вот делаю у меня болит..((

- А вы вот вот так вот не делайте.
18 сен 18, 22:14    [21678815]     Ответить | Цитировать Сообщить модератору
 Re: Альтернативный TreeView  [new]
Aniskin
Member

Откуда:
Сообщений: 303
Котовасия
с какой конкретной целью создавался этот контО'л?

Эээ... что бы нарисовать дерево в виде дерева с возможностью интерактива. Надеюсь правильно понял вопрос.

makhaon
gdi+ умеет их сам такие рисовать с альязингом сразу

Спасибо, поизучаю, как будет время.

DimaBr
Судя по скрину, очень неэкономично расходуется прстранство

Нужно понимать, что каждый UI элемент имеет свое предназначение. Мое дерево не предназначено для тысяч элементов. Оно скорее для отображения картинки вида "Вот я, вот мои папа и мама, вот мои бабушки и дедушки".
19 сен 18, 04:53    [21678914]     Ответить | Цитировать Сообщить модератору
 Re: Альтернативный TreeView  [new]
Aniskin
Member

Откуда:
Сообщений: 303
Что то GDI+ меня особо не впечатлил:

Картинка с другого сайта.
19 сен 18, 07:48    [21678942]     Ответить | Цитировать Сообщить модератору
 Re: Альтернативный TreeView  [new]
defecator
Member

Откуда:
Сообщений: 38962
Aniskin
Что то GDI+ меня особо не впечатлил:

Картинка с другого сайта.

с GDI+ красиво выглядит, без GDI - словно рубили топором
19 сен 18, 08:47    [21678975]     Ответить | Цитировать Сообщить модератору
 Re: Альтернативный TreeView  [new]
defecator
Member

Откуда:
Сообщений: 38962
я уже придумал, где использовать это няшное дерево,
усеры будут пищать от восторга
19 сен 18, 08:49    [21678981]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Delphi Ответить