Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Virtual TreeView - Изменение ширины Headera 
:(
    Опции темы
0FF
Дата 19.10.2006, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 10.8.2003

Репутация: нет
Всего: нет



Как видите из картинки, текст в некоторых узлах Virtual TreeView выходит за граници колонки и отмечается тримя точками (...). Ширина колонки равна ширине Headera. Header помечен красным.

user posted image

Интересует вопрос, как в Virtual TreeView в зависимости от выхода строки за границу колонки, растянуть её Header, чтоб в низу появился скролл бар, а длинна
Headera доходила бы до до конца текста самого  длинного нода с текстом?


PS: Как растягивать шапку изменяя её width рассказывать не надо  smile 
PM MAIL   Вверх
Quadr0
Дата 20.10.2006, 20:17 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











...

Это сообщение отредактировал(а) Quadr0 - 15.7.2011, 13:11
  Вверх
MetalFan
Дата 20.10.2006, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



  VirtualDrawTree.Header.AutoFitColumns() ?
у тебя string или draw tree?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
0FF
Дата 20.10.2006, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 10.8.2003

Репутация: нет
Всего: нет



Цитата(Quadr0 @  20.10.2006,  20:17 Найти цитируемый пост)
Автоматом в свйоствах?


В том то и дело что никак.
Header автоматом растягивается до границ контрола VT, но не до самой длинной строки.


Цитата(Quadr0 @  20.10.2006,  20:17 Найти цитируемый пост)
Только в событии получения текста можно длину этого текста подсчитать и выставить ширину колонки, если ее не достает. 


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

В обычном TreeView это автоматом делается, а тут нет.
Цитата(MetalFan @  20.10.2006,  22:11 Найти цитируемый пост)
VirtualDrawTree.Header.AutoFitColumns() ?
у тебя string или draw tree? 


Не понял, AutoFitColumns по дефолту равен True причём тут string или draw tree?

Добавлено @ 23:21 
На всякий случай хочу показать как должно всё выглядеть
user posted image

Как видите снизу появляется скрол бар позволяющий проскролить невидимую в пределах контрола область.

Это сообщение отредактировал(а) 0FF - 20.10.2006, 23:14
PM MAIL   Вверх
anwe
Дата 21.10.2006, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: нет
Всего: 23



Попробуй знаешь как?
Ширина колонки измеряется в пикселях. Ширина букв физического шрифта, который по умолчанию использует винда, также измеряется в пикселях.
Возьми функцию GetSystemMetrics, возвращающую параметры шрифта в пикселях. В структуре, на которую ссылается функция есть параметр tmAveCharWidth - средняя ширина символов. Зная количество символов в строке, определишь ее длину.
Можешь взять параметр tmMaxCharWidth - ширина самого широкого символа - для перестраховки.

Это сообщение отредактировал(а) anwe - 21.10.2006, 01:15
PM MAIL   Вверх
MetalFan
Дата 21.10.2006, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Цитата(0FF @  20.10.2006,  23:13 Найти цитируемый пост)
Не понял, AutoFitColumns по дефолту равен True причём тут string или draw tree?

что-что?? какой true? это не пропертя, а метод... как может быть метод чемуто равен?
вызываешь его - "получаешь" ширины столбцов по самой длинной строке столбца... или тебе чего надо то?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
RA
Дата 21.10.2006, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 14
Всего: 115



Тут нужно залазить в событие OnShortenString // это кокраз событие на обрезание строки не влазящей в шапку.

там нужно высчитывать длинну текста в соответствии с TextSpace и удлиннять шапку, укорачивать шапку скорее всего придётся в OnChange или в OnCollapse, также всё высчитывать и тд.... 

Штука вобще полезная, но делать её мне пока лень smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0859 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.