![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Заблокировать доступ к родительской ветке 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);