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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оформление VitrualTreeView 
:(
    Опции темы
estra
Дата 22.12.2009, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Есть VitrualTreeView, заполняемое примерно следующим образом

user posted image

1. Можно ли (и если да, то как) сделать эффект объединения ячеек, как в Excel, чтобы текст (в данном случае название фильма) не обрывался у границы первой колонки, а продолжал писаться во второй, третьей и т.д., сколько бы их не было?

2. Хочется использовать фон у VitrualTreeView, но когда я в событии BeforeCellPaint делаю отрисовку, то под ней фона не видно (что конечно же логично). Хочу, отрисовывая свой фон, сделать эффект полупрозрачности, для чего мне нужно получить координаты ячейки относительно VitrualTreeView, а зная их скопировать часть канвы с этими координатами, и рисовать уже на этой копии. Как это можно сделать?

Очень надеюсь на помощь форумчан!
PM MAIL   Вверх
kami
Дата 22.12.2009, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

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



по п.1:
AutoSpanColumns в TreeOptions>AutoOptions поставить в True.
В ячейках, которые стоят после длинного текста должно быть '' (пустая строка), неплохо так же (imho) сделать обработчик события OnGetCellIsEmpty.
PM MAIL WWW   Вверх
estra
Дата 22.12.2009, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо!

Цитата(kami @ 22.12.2009,  20:45)
…неплохо так же (imho) сделать обработчик события OnGetCellIsEmpty.


А можно поподробнее? С какой целью нужно обрабатывать это событие? Если можно, приведите для наглядности пример…
 smile 
PM MAIL   Вверх
kami
Дата 22.12.2009, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

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



Давненько не заглядывал уже в исходники VT, но если не изменяет память, это событие активно используется для определения - стоит ли отрисовывать границы ячеек, их фон и т.п... Можно, конечно, и без него (все работать будет), но кажется дольше (с лишними вызовами к примеру отрисовки).

Пример из моего кода:
Код

procedure TfrState.vtGetCellIsEmpty(Sender: TBaseVirtualTree;  Node: PVirtualNode; Column: TColumnIndex; var IsEmpty: Boolean);
var
  NodeData: pStateNodeData;
begin
  if Column = 1 then
    IsEmpty := False // первая колонка не может быть пустой - № п/п или заголовок
  else
    begin
      IsEmpty:=True; // иначе - 
      NodeData := Sender.GetNodeData(Node);
      if Assigned(NodeData) then
        if Assigned(NodeData.StateItem) then
          IsEmpty := NodeData.StateItem.ElementName <> ''; // если заголовок - все колонки кроме первой пустые.
    end;
end;


PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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