Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.01.16;
Скачать: CL | DM;

Вниз

Как изменить высоту элемента TListBox?   Найти похожие ветки 

 
@!!ex ©   (2010-10-23 18:06) [0]

Этот вопрос возникал у меня несколько месяцев назад и я его здесь уже задавал.
Если не ошибаюсь АП, дал мне на него вот такой ответ:
ItemEx.mask := TVIF_INTEGRAL;
ItemEx.hItem := Node.ItemId;
ItemEx.iIntegral :=4;
SendMessage (TreeView.Handle, TVM_SETITEMA, 0, LPARAM(@ItemEx));

И это действительно работало, до тех пор пока мы не запустили прогу на Windows 7.

Дело в том, что в список элементы добавляются пачкой. И чтобы все не тормозило, используем BeginUpdate, EndUpdate.
Беда в том, что указанный выше код вызывает перерисовку всего дерева.
То есть добавление элементов в семерке тормозит адски.
Искал решение в интернете. Нашел событие MeasureItem, которое теоретически делает то что нужно...
Но такого события у ListBox"a в TDE 2006 просто нету.
Как быть?

Есть ли другой способ?
или как обрабатывать события, которые в VCL не реализованы?


 
Sapersky   (2010-10-23 23:02) [1]

Смешались в кучу списки, дрЕва... ну будем считать, что речь всё-таки о TreeView, тем более что есть сообщения о проблеме с тормознутостью TVM_SETITEM в Win7:
http://groups.google.com/group/microsoft.public.vc.mfc.docview/browse_thread/thread/3e401b1ce842abc9
Там предлагают добавлять элементы через TVM_INSERTITEM, при этом можно сразу указать высоту.
Если высота элементов одинаковая, можно ещё попробовать TVM_SETITEMHEIGHT.


 
@!!ex ©   (2010-10-24 22:03) [2]

Ай да, да.
Действительно речь о дереве.
Переклинило на списке, не знаю почему...

Я и в гугле по TListBox искал... Вот и не нашел что нужно.
Видимо работать в выходные - плохая идея. :)


 
@!!ex ©   (2010-10-24 23:06) [3]

Размер разный.
Точнее их два:
1) элементы без картинки.
2) Элементы с картинкой.

Задача проста:
сделать дерево контента в редакторе.
например:
модели
 +-модель1
   [здесь картинка превьюшка, размер элемента большой]
  -модель2
   [здесь картинка превьюшка, размер элемента большой]
звуки
 +-
 звук1
  [никакой превьюшки нет, размер элементы обычный]

TVM_INSERTITEM - подвесило у меня программу и похоже не дружит с VCL

Item.mask:=TVIF_TEXT or TVIF_PARAM;
     Item.pszText:=PChar(string(FNDDATA.cFileName)+"("+GetModelDescription(ModelsPrefix+path+FNDDATA.cFileName)+")"+#0);
     Item.cchTextMax:=Length(string(FNDDATA.cFileName)+"("+GetModelDescription(ModelsPrefix+path+FNDDATA.cFileName)+")"+#0);
     FileName:="\"+path+string(FNDDATA.cFileName);
     Pointer(Item.lParam):=TPreviewItem.Create;

     ItemEx.mask := TVIF_INTEGRAL;
     ItemEx.hItem := Node.ItemId;
     ItemEx.iIntegral :=4;

     newItem.hParent:=TreeNode.ItemId;
     newItem.hInsertAfter:=TVI_LAST;
     newItem.itemex:=ItemEx;
     newItem.item:=Item;

     SendMessage (TreeView.Handle, TVM_INSERTITEM , 0, LPARAM(@newItem));



Страницы: 1 вся ветка

Текущий архив: 2011.01.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
15-1285088261
Empleado
2010-09-21 20:57
2011.01.16
Ошибка при вызове ADsFreeEnumerator


2-1287823977
Константинов
2010-10-23 12:52
2011.01.16
ADOConnection доступ к файлам БД


15-1285835897
Kerk
2010-09-30 12:38
2011.01.16
Подскажите компонент


2-1287557759
LDV
2010-10-20 10:55
2011.01.16
Связать алгоритм с классами


15-1285881569
Германн
2010-10-01 01:19
2011.01.16
DEFINE VERxxx