Главная страница
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.01 c
3-1251359321
Vitalts
2009-08-27 11:48
2011.01.16
Сохранение больших объемов данных в файл


2-1287920088
George
2010-10-24 15:34
2011.01.16
TABOrder и фреймы


2-1288094860
fiascko
2010-10-26 16:07
2011.01.16
перевод из 16ой в 10ую


15-1285581726
Baks
2010-09-27 14:02
2011.01.16
Как определить русифицирована windows или нет?


15-1286224153
Юрий
2010-10-05 00:29
2011.01.16
С днем рождения ! 5 октября 2010 вторник