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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TreeView, Длиные записи???? 
:(
    Опции темы
WaReZ_MEN
Дата 15.11.2004, 06:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Как сделать так чтобы перенс длинои в 300 символов делился на две строки???

Пример:
+Городаааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааа
-Улицы

Нужно чтоб было так:
+Городааааааааааааааааааааааааааааааааа
аааааааааааааааааааааааааааааааааааааа
-Улицы

VirtuallView прозьба не предлагать (Сложный слишком и глючный)..

Заранее спасибо!!!
[email protected]
  Вверх
Dimich
Дата 15.11.2004, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Думаю, надо делать свой обработчик OnCustomDrawItem и в нем выводить текст в зависимости от его длины в одну или несколько строк. Я попробовал, но мне не удалось изменить высоту Item'a. Кто может подскажет, как можно сделать TreeView с разной высотой Item'ов?
--------------------
Не работает - исправь, работает - не трогай!!!
PM MAIL ICQ Jabber   Вверх
WaReZ_MEN
Дата 16.11.2004, 06:06 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я не знаю как это вообще делается.
  Вверх
Dimich
Дата 16.11.2004, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вот достаточно корявый кусок кода (вы уж извиняйте), который отрисовывает TreeView, без плюсиков, черточек, линий и прочего (это примитивный минимум):
Код

procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
 Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
var
 NodeRect: TRect;
begin
 with TreeView1.Canvas do
 begin
   DefaultDraw := false;
   if cdsSelected in State then
     Font.Color := clRed;
   NodeRect := Node.DisplayRect(False);
   Brush.Color := clBlue;
   Brush.Style := bsClear;
   FillRect(NodeRect);
   Brush.Color := clRed;
   NodeRect.Left := NodeRect.Left + (Node.Level * TreeView1.Indent);
   NodeRect.Left := NodeRect.Left + TreeView1.Indent;
   // Разбивка на строки будет более красивая в будущем,
   // пока сойдет так:
   TextOut(NodeRect.Left, NodeRect.Top, Copy (Node.Text, 1, 5));
   NodeRect.Top := NodeRect.Top + 10;
   TextOut(NodeRect.Left, NodeRect.Top, Copy (Node.Text, 5, Length (Node.Text)));
 end;
end;

Вопрос, который, созрел у меня в предыдущем посте остался - как же увеличить высоту Item'a, чтобы например текст уместился в 2 строки?
--------------------
Не работает - исправь, работает - не трогай!!!
PM MAIL ICQ Jabber   Вверх
p0s0l
Дата 17.11.2004, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

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



Цитата(Dimich @ 16.11.2004, 09:39)
Вопрос, который, созрел у меня в предыдущем посте остался - как же увеличить высоту Item'a, чтобы например текст уместился в 2 строки?


Так можно установить эталонную высоту итемов:
Код
 TreeView_SetItemHeight(TreeView1.Handle, 10);
(вместо 10 - подставь нужную высоту)

Далее, у каждого итема можно задать свойство Integral - это число умножается на эталонную высоту и получается высота итема (по умолчанию Integral = 1).
Чтобы задать Integral итема, делай так:
Код

uses CommCtrl;

procedure TForm1.Button1Click(Sender: TObject);
var
 tviex : TTVItemEx;
begin
 tviex.mask := TVIF_INTEGRAL or TVIF_HANDLE;
 tviex.hItem := treeview1.Selected.ItemId;;
 tviex.iIntegral := 2;
 SendMessage (TreeView1.Handle, TVM_SETITEM, 0, LPARAM(@tviex));
 TreeView1.Invalidate;
end;
Это сделает выбранный итем дерева размером в 2 строки...
Борланд по каким-то причинам не стал делать возможность изменения высоты отдельного итема на уровне VCL, поэтому если изменить высоту с помощью WinAPI, то становится как-то глюкаво 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.0422 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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