powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / VirtualTreeView: многострочный текст в ячейках
25 сообщений из 41, страница 1 из 2
VirtualTreeView: многострочный текст в ячейках
    #39816162
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли как-то настроить VirtualStringTree, чтобы для длинного текста в одной из ячеек он автоматически увеличивал высоту всей ноды и отрисовывать текст в этой ячейке в несколько строк по образцу своих аналогов из DevExpress?
...
Рейтинг: 0 / 0
VirtualTreeView: многострочный текст в ячейках
    #39816197
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
VirtualTreeView: многострочный текст в ячейках
    #39816353
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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