Форум: "Начинающим";
Текущий архив: 2011.01.16;
Скачать: [xml.tar.bz2];
ВнизКак изменить высоту элемента 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c