Гость
Форумы / Delphi [игнор отключен] [закрыт для гостей] / VirtualTreeView: многострочный текст в ячейках / 25 сообщений из 41, страница 1 из 2
22.05.2019, 08:42
    #39816162
Vlad F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VirtualTreeView: многострочный текст в ячейках
Можно ли как-то настроить VirtualStringTree, чтобы для длинного текста в одной из ячеек он автоматически увеличивал высоту всей ноды и отрисовывать текст в этой ячейке в несколько строк по образцу своих аналогов из DevExpress?
...
Рейтинг: 0 / 0
22.05.2019, 09:37
    #39816197
ёёёёё
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VirtualTreeView: многострочный текст в ячейках
Vlad F,

можно. Помечаешь нужные узлы как "многострочные":

Код: pascal
1.
2.
3.
4.
5.
TBaseVirtualTree = class(TCustomControl)
...
  public
...
   property MultiLine[Node: PVirtualNode]: Boolean read GetMultiline write SetMultiline;



А событии OnMeasureItem высчитываешь высоту. Например - по количеству строк, разделенных #10.
Сначала проверяешь, что данных нод - многострочный
Код: pascal
1.
  if Sender.MultiLine[Node] and (NodeHeight > 0) then


Потом сканируешь текст нужных столбцов


Код: pascal
1.
2.
3.
4.
    for i := 0 to Pred( дерево.Columns.Count) do
    begin
      fColText := дерево.Text[Node, i];
      анализ текста столбца , фиксация максимальной высоты нода в fMaxLFCnt



Потом вычисляешь высоту нода с учетом шрифта.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
    TargetCanvas.Font := Sender.Font;

    if дерево.Header.Columns.Count > 1 then
      NodeHeight := дерево.ComputeNodeHeight(TargetCanvas, Node, 1, ' ')
    else
      NodeHeight := 13;// Например

    NodeHeight := NodeHeight * (fMaxLFCnt + 1) + 3;
...
Рейтинг: 0 / 0
22.05.2019, 12:36
    #39816353
Vlad F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VirtualTreeView: многострочный текст в ячейках
ёёёёё,

Отоночо, Михалыч! (с))
Даже боюсь дальше спрашивать, - со строкой заголовков - тоже так?
...
Рейтинг: 0 / 0
22.05.2019, 12:43
    #39816364
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VirtualTreeView: многострочный текст в ячейках
OFF

просто взгляд человека со стороны: явная недоработка компонента, странно что за столько лет не сделали свойства .AutoHeight:boolean. Или сделали?
...
Рейтинг: 0 / 0
22.05.2019, 12:43
    #39816366
Vlad F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VirtualTreeView: многострочный текст в ячейках
ёёёёё,

Впрочем, с заголовком уже в демке нашел, спасибо.
...
Рейтинг: 0 / 0
22.05.2019, 12:45
    #39816370
Vlad F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VirtualTreeView: многострочный текст в ячейках
Кроик Семён,

Ну, дык, нетути, судя по всему.
...
Рейтинг: 0 / 0
22.05.2019, 12:46
    #39816371
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VirtualTreeView: многострочный текст в ячейках
...
Рейтинг: 0 / 0
22.05.2019, 13:33
    #39816443
Vlad F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VirtualTreeView: многострочный текст в ячейках
Кроик Семён,

Что-то, и даже многое, вне всякого сомнения, есть, но ты уверен, что по ссылке это самое оно?
...
Рейтинг: 0 / 0
22.05.2019, 14:31
    #39816512
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VirtualTreeView: многострочный текст в ячейках
не, это я поспешил
...
Рейтинг: 0 / 0
22.05.2019, 15:06
    #39816566
ёёёёё
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VirtualTreeView: многострочный текст в ячейках
Vlad F,

можно и к заголовку. Свойство Height ты можешь поменять в любой момент после изменения ширины столбцов и текста колонки, как хочется. Надо только заставить верно текст отображаться.
Посмотри внутрь метода TVirtualTreeColumns.PaintHeader.
У хэдера надо установить owner draw mode, и заюзать события OnHeaderDrawQueryElements и AdvancedHeaderDraw. В первом определяешь, что нужно рисовать "особым образом" (set of THeaderPaintElements), второе вызывается применительно к этим элементам - тут и рисуй.

Мы так делали, например, объединенные колонки.
...
Рейтинг: 0 / 0
22.05.2019, 15:27
    #39816582
Василий 2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VirtualTreeView: многострочный текст в ячейках
VTV настолько богат возможностями, что некоторые вещи приходится делать довольно-таки большим количеством кода.
...
Рейтинг: 0 / 0
22.05.2019, 15:31
    #39816588
Vlad F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VirtualTreeView: многострочный текст в ячейках
ёёёёё,

Заголовок, проехали, я же вроде сразу поправился, ибо многострочность в нем все-таки управляется свойствами.
...
Рейтинг: 0 / 0
22.05.2019, 15:42
    #39816597
ёёёёё
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VirtualTreeView: многострочный текст в ячейках
Василий 2VTV настолько богат возможностями, что некоторые вещи приходится делать довольно-таки большим количеством кода.
Да. И даже многие простые вещи в нем приходится делать с нуля. "Виртуализация" - это хорошо, но со временем достаёт.

Я все реже его использую, и все чаще что-либо из DevExpress или EhLib.
...
Рейтинг: 0 / 0
22.05.2019, 16:06
    #39816625
Vlad F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VirtualTreeView: многострочный текст в ячейках
ёёёёё,

Счастливчик, хех. Передо мной сейчас задача перевода одного серьезного приложения с DevExpress на стандартные или фриварные компоненты.
Это какой-то ацкий ад.
...
Рейтинг: 0 / 0
22.05.2019, 22:44
    #39816812
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VirtualTreeView: многострочный текст в ячейках
Vlad FПередо мной сейчас задача перевода одного серьезного приложения с DevExpress на стандартные или фриварные компоненты.

Как возникли такие требования? Время программиста, ведь, тоже не бесплатное ....
...
Рейтинг: 0 / 0
23.05.2019, 00:00
    #39816832
энди
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VirtualTreeView: многострочный текст в ячейках
нет таких бесплатных компонентов, ну как минимум ehlib нужен, на стандартных ты аналога не сделаешь.
...
Рейтинг: 0 / 0
23.05.2019, 07:57
    #39816872
ёёёёё
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VirtualTreeView: многострочный текст в ячейках
энди,

+11050.
И VTV в 2019 использовать - нет больше причин, кроме поддержки старых проектов. Гемор один.
...
Рейтинг: 0 / 0
23.05.2019, 09:35
    #39816902
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VirtualTreeView: многострочный текст в ячейках
ёёёёё> И VTV в 2019 использовать - нет причин

А чего так? Разонравилось, девки ваше всё?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
23.05.2019, 09:57
    #39816909
ёёёёё
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VirtualTreeView: многострочный текст в ячейках
Гаджимурадов Рустамёёёёё> И VTV в 2019 использовать - нет причин

А чего так? Разонравилось, девки ваше всё?

Например, для создания редактируемой таблички всякий создавать реализацию интерфейса IVTEditLink, подсовывать их в обработчике OnCreateEditor, руками отрабатывать условия старта и завершения редактирования - это все немеряно гибко и увлекательно, но съедает время.

Даже "высший пилотаж" с DevExpress, когда работаешь с кастомными источниками данных и редакторами, реализуется куда быстрее.
Ну да, с DevExpress изначально нужно долго разбираться, зато потом есть масса готовых вариантов применения. А с VTV хардкодить приходится все время. Да, наработаны заготовки, но по факту получилось ничуть не лучше предлагаемого готового, а как бы не наоборот.
...
Рейтинг: 0 / 0
23.05.2019, 10:44
    #39816934
Василий 2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VirtualTreeView: многострочный текст в ячейках
ёёёёёНапример, для создания редактируемой таблички всякий создавать реализацию интерфейса IVTEditLink, подсовывать их в обработчике OnCreateEditor, руками отрабатывать условия старта и завершения редактирования - это все немеряно гибко и увлекательно, но съедает время.
Это только если редактировать через нестандартные контролы, а обычный Edit есть из коробки.
К тому же вот есть эти наработки, а кто-то хоть раз ими поделился с разработчиками? Вот и сидят все свои велосипеды пилят.
...
Рейтинг: 0 / 0
23.05.2019, 10:59
    #39816945
ёёёёё
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VirtualTreeView: многострочный текст в ячейках
Василий 2,

редактор "из коробки" очень уж убог, непонятно зачем он вообще реализован.
...

Делиться с разработчиком - чем? Фишка VTV как раз в том, что в нем все по-максимуму вынесено "наружу" - кастомизируй на здоровье. Другое дело, это самое "здоровье" - ресурс ограниченный.
...
Рейтинг: 0 / 0
23.05.2019, 15:40
    #39817208
Василий 2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VirtualTreeView: многострочный текст в ячейках
ёёёёёВасилий 2,

редактор "из коробки" очень уж убог, непонятно зачем он вообще реализован.
...

Делиться с разработчиком - чем? Фишка VTV как раз в том, что в нем все по-максимуму вынесено "наружу" - кастомизируй на здоровье. Другое дело, это самое "здоровье" - ресурс ограниченный.
Убог? Обычный виндовый/мсд-ный edit. Что еще нужно для простых ячеек?
Делиться, к примеру, реализациями editlink.
...
Рейтинг: 0 / 0
24.05.2019, 05:47
    #39817432
ain-2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VirtualTreeView: многострочный текст в ячейках
ёёёёёГаджимурадов Рустамёёёёё> И VTV в 2019 использовать - нет причин

А чего так? Разонравилось, девки ваше всё?

Например, для создания редактируемой таблички всякий создавать реализацию интерфейса IVTEditLink, подсовывать их в обработчике OnCreateEditor, руками отрабатывать условия старта и завершения редактирования - это все немеряно гибко и увлекательно, но съедает время.
А что за причина такая, что не даёт вам один раз втулить нужное в VTV и пользоваться этим на своё здоровье?
...
Рейтинг: 0 / 0
24.05.2019, 09:15
    #39817470
Vlad F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VirtualTreeView: многострочный текст в ячейках
ain-2,

Настоящих буйных мало, вот и нету вожаков. (с))
...
Рейтинг: 0 / 0
24.05.2019, 09:37
    #39817489
fraks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VirtualTreeView: многострочный текст в ячейках
Когда-то давно, ниасилив понять почему так сложно пробежаться по датасету без парадигмы "текущая запись, и только так", сделал себе массив рекордов, прицепив их к подобию DrawGrid. Тогда мне для этого попался GridView от Романа Мочалова.
Что бы каждый раз при использовании не писать новых рекордов и обработчиков, организовал это в виде "динамического массива" с динамически объявляемыми полями.
Через какое-то время мне понадобилось от грида что-то, чего там не было, или я не нашел, кажется работа с колесом мыши.
Перешел на VTV. В нем кое-чего нет, что было в гриде Мочалова, но есть колесо и его же можно использовать при нужде в дереве.

Таким образом, мне не нужны ни родные датасеты, ни дбгриды, вообще никакие дб-контролы.
Переползал несколько раз с одной версии Дельфи на другую, и именно с этим комплектом у меня не было никаких проблем.

Так что, некотрая степень "буйности", имеется :)
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / VirtualTreeView: многострочный текст в ячейках / 25 сообщений из 41, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]