Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Заблокировать доступ к родительской ветке ListView [D7, WinXP]


kyn66 ©   (2007-03-16 10:19:00) 

Возможно-ли САБЖ, при таком раскладе:

-Родительская  ветка 1
 -дочерняя ветка 1
 -дочерняя ветка 2
 -дочерняя ветка 3
-Родительская  ветка 2
 -дочерняя ветка 1
 -дочерняя ветка 2
 -дочерняя ветка 3
...

т.е. родительские ветки не должны получать фокус


kyn66   (2007-03-16 12:58:00) [1]

>ЮЮ
Действительно, нашел уже и сам, Спасибо!


ЮЮ   (2007-03-16 12:40:00) [2]

От того, наверное, что TListItem не имеет отношения к TStrings, у которого он присутствует. А для хранения ссылки на объект достаточно и Data, который тоже Pointer


Jeer   (2007-03-16 12:35:00) [3]

да с какого перепугу он там должен быть и кто это вообще ?

Пользуйся
TListItem.Data


kyn66   (2007-03-16 12:32:00) [4]

Пардонс, опять очепятка , имелось ввиду ListView.Items. Objectsотсутствует


Jeer   (2007-03-16 12:24:00) [5]

Treenode.Data тебе поможет.


Сергей М.   (2007-03-16 12:21:00) [6]


> почему у TreeView.Items.Objects отсутствует?


А почему, спрашивается, он обязан присутствовать ?


kyn66   (2007-03-16 12:18:00) [7]

Пытаюсь... А не скажешь заодно, почему у TreeView.Items. Objectsотсутствует?


Сергей М.   (2007-03-16 12:05:00) [8]


> kyn66 ©   (16.03.07 11:58) [6]


Ну тогда сам думай.
Справка-то всегда под рукой)


kyn66   (2007-03-16 11:58:00) [9]


> if Change = ctState then AllowChange :=  ((Item.Selected
> and Assigned(Item.Data)) or not Item.Selected;

Не шость не то, при клике на родителе - курсор к нему намертво прилепает.

> А чем TreeView не угодил ?


Вид представление такой нужен.


Сергей М.   (2007-03-16 11:41:00) [10]


> но там нет связи для Parent


Разумеется нет. Но что мешает в "дочернем" TListTtem в св-ве Data сослаться на  "родительский" TListTtem ?
При таком решении проверка сводится к Assigned(Item.Data):
- True, если "дочерний"
- False, если "родительский"


> в этом случае вааще ни одна ветка не прорисовывается(текст).
>  Токак узлы голые и все


if Change = ctState then
AllowChange :=  ((Item.Selected and Assigned(Item.Data)) or not Item.Selected;

А чем TreeView не угодил ?


kyn66   (2007-03-16 11:20:00) [11]

уже пробовал, но там нет связи для Parent. Пробовал так //  AllowChange := Integer(Item.Data) <> 0;

Вроде то что нужно, но в этом случае вааще ни одна ветка не прорисовывается(текст). Токак узлы голые и все


Сергей М.   (2007-03-16 10:55:00) [12]


> у ListView тоже есть AllowChange


Ну так и используй его, какие проблемы-то ?
Критерий проверки "родственных отношений ветвей" тебе известен же ...


kyn66   (2007-03-16 10:44:00) [13]

Я не совсем грамотно задал вопрос. Родительская и дочерняя отличаются только визуально за счет сдвига вправо "дочрней ветки"? пардонс.
> AllowChange := Assigned(Node.Parent);
Это , я понимаю относится к TreeView. Да но у ListView тоже есть AllowChange...


Сергей М.   (2007-03-16 10:27:00) [14]

У ListView нет ни родительских ни дочерних "веток".
Ветки есть в TreeView

Обрабатывай OnChanging - там есть возможность запретить смену фокуса по требуемому тебе условию

AllowChange := Assigned(Node.Parent);


Наверх

Титульная страница Поиск, карта сайта Написать письмо