Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> VirtualTreeView и фокус определенной записи 
V
    Опции темы
MacTep
Дата 15.8.2012, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: 4
Всего: 4



Есть следующее дерево.
user posted image
Раскрываю его программно следующим кодом:
Код

        vt.ClearSelection;
        vt.FocusedNode := node;
        vt.FocusedNode.States := vt.FocusedNode.States + [vsSelected];
Но не пойму, почему далее по щелчке мышью на другом узле выделение работает некорректно (старое остается на узле, выделенным кодом сверху, новое устанавливается для только что выделенного мышью узла):
user posted image
Что можно сделать, чтобы такого не было?


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
halfhope
Дата 16.8.2012, 03:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 31.5.2010

Репутация: нет
Всего: нет



Если это баги отрисовки, тогда попробуйте repaint, но это маловероятно.  По ходу это проблемы с vsSelected, точнее с ним все в порядке, попробуйте убирать флаг vsSelected со старого нода перед выделением нового. Т.е. на старом ноде остался флаг vsSelected; или свойство MultiSelect(False) но не знаю, поможет оно или нет.

Это сообщение отредактировал(а) halfhope - 16.8.2012, 03:51
PM MAIL   Вверх
kami
Дата 16.8.2012, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



Цитата(MacTep @  15.8.2012,  22:51 Найти цитируемый пост)
Что можно сделать, чтобы такого не было?

Код

vt.Selected[OldNode]:=False;
vt.Selected[Node]:=True;
vt.FocusedNode := Node;
vt.FocusedColumn := 3;

PM MAIL WWW   Вверх
MacTep
Дата 16.8.2012, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: 4
Всего: 4



Цитата(halfhope @  16.8.2012,  03:49 Найти цитируемый пост)
Т.е. на старом ноде остался флаг vsSelected; или свойство MultiSelect(False) но не знаю, поможет оно или нет.
MultiSelect не установлено.

Код

vt.Selected[OldNode]:=False;
vt.Selected[Node]:=True;
vt.FocusedNode := Node;
vt.FocusedColumn := 3;
Это для какого события? И почему/зачем
Код

vt.FocusedColumn := 3;
?


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
kami
Дата 16.8.2012, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



Цитата(MacTep @  16.8.2012,  07:53 Найти цитируемый пост)
Это для какого события?

Это для того, в котором "раскрывается программно следующим кодом".

Цитата(MacTep @  16.8.2012,  07:53 Найти цитируемый пост)
И почему/зачем

А это я не обратил внимания, что у тебя не включен ExtendedSelect, убрать.
Но в любом случае - нужно устанавливать Selected и Focused. Почему - не помню, давненько смотрел в исходники VT. Хотя... и версия VT у меня ни разу не последняя smile
PM MAIL WWW   Вверх
MacTep
Дата 16.8.2012, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: 4
Всего: 4



Первое: у меня нет OldNode на момент выделения найденного.
Второе: причем тут событие, когда у меня раскрывается определенный пункт дерева, если глюк происходит на следующем действии, а именно на действии выделения другого узла дерева?

Добавлено через 3 минуты и 55 секунд
В общем заработало корректно вот так:
Код

        vt.ClearSelection;
        vt.FocusedNode := node;
        vt.Selected[node] := true;
//        vt.FocusedNode.States := vt.FocusedNode.States + [vsSelected]; // оказалось ненужным совсем


Это сообщение отредактировал(а) MacTep - 16.8.2012, 12:19


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
kami
Дата 16.8.2012, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



Цитата(MacTep @  16.8.2012,  12:18 Найти цитируемый пост)
Первое: у меня нет OldNode на момент выделения найденного.

Без комментариев.
Цитата(MacTep @  16.8.2012,  12:18 Найти цитируемый пост)
Второе: причем тут событие, когда у меня раскрывается определенный пункт дерева?

Ты спросил -
Цитата(MacTep @  16.8.2012,  07:53 Найти цитируемый пост)
Это для какого события?
 я ответил. Откуда мне знать, в какой части программы будет работать обсуждаемый код?
Код мной был приведен верный, в конце концов им ты и воспользовался. Какой смысл в этой критике?

Это сообщение отредактировал(а) kami - 16.8.2012, 13:38
PM MAIL WWW   Вверх
MacTep
Дата 16.8.2012, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: 4
Всего: 4



kami, спасибо большое. Никакой критики. Может быть просто слова подобрал не те, чтобы выразить свои вопросы. Наоборот очень благодарен, что помог. Спасибо!

Добавлено через 27 секунд
Код

vt.Selected[OldNode]:=False;
этого, кстати, не потребовалось smile


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0958 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.