![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TListView
MikeLevinN © (2007-11-18 12:28:00)Здравствуйте. У меня есть TListView, ViewStyle = vsIcon, LargeImages = ImageList1; ImageList1.Height = Width = 40;
Как мне изменить расстояние между записами, и как мне изменить расстояние от краев?
Для наглядности покажу картинку, левый ListView — текущая ситуация; правый — то, как мне нужно сделать.
http://img218.imageshack.us/img218/2396/lvte4.gif
{RASkov} (2007-11-18 16:59:00) [1]> [4] MikeLevinN (18.11.07 16:38)
> первая проблема: отсутствие GetItemAt(x,y) у TListBox
Может так решить эту "траблу":
var N: Integer;
begin
N:=ListBox1.ItemAtPos(Point(X,Y), True);
if N>=0 then Caption:=ListBox1.Items[N] else Caption:='';
end;
> А возможно ли каким-то образом
Вряд ли...
MikeLevinN (2007-11-18 16:38:00) [2]Спасибо, я попробую TListBox, единственное настораживает, что у меня получится сделать нужный функционал. Текущий TListView — не просто список, — это совего рода кнопки, которые реагируют на наведение курсора (первая проблема: отсутствие GetItemAt(x,y) у TListBox).
А возможно ли каким-то образом (я сам не представляю как) отменить у отдельного контролла (ну того же TListView) обработку манифестом, заставить его обрабатываться как без-темный (без XPMan)?
guav (2007-11-18 16:20:00) [3]Реализация при использвании тем различается в самой библиотеки Сommon Controls в Windows.
Есть другие проблемы с темами, в частности TabControl с темами не поддерживает все варианты закладок.
> http://img218.imageshack.us/img218/2396/lvte4.gif
Если хочется так точно управлять расположением элементов - рекомендую виртуальный листбокс (TListBox + lbsVitrualOwnerDraw) и рисуй сам всё как хочешь.
MikeLevinN (2007-11-18 16:12:00) [4]Радость по поводу LVM_SETICONSPACING закончилась. В тестовом приложении не использовал манифест (XPMan), всё было ок. Добавил манифест, все начало работать не так как нужно. Мало того, что ListView_SetIconSpacing, стало работать не так, так ещё и мой собственный код отрисовки в OnCustomDrawItem отказался нормально функционировать.
Что происходит с TListView с примененим манифеста? Я смотрел код TListView из ComCtrls.pas, так там есть единственное место, которое связано с ThemeServices и избавление от этого места не приносит результата.
Что мне сделать?
Использую Win2003 без тем вообще.
MikeLevinN (2007-11-18 13:29:00) [5]Сдвинуть расстояние между "иконками" и уменьшить расстояние от левой границы помоглао — LVM_SETICONSPACING. Оно же: ListView_SetIconSpacing
Но вот что деалть с расстоянием от верхней границы? У меня идеи закончились.