Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > вопрос по treeview


Автор: sani79 21.4.2006, 10:23
Вопрос такой: как сделать, чтобы после создания node'a сразу редактировалось его имя. То есть при создании задаем имя по умолчанию, и сразу курсор установлен на переименования пользователем. 

Автор: _hunter 21.4.2006, 10:48
вызови у дерева метод Select и после этого покажи InputQuery и поменяй текст в случае нажатия OK 

Автор: Yanis 21.4.2006, 10:51
Цитата(sani79 @  21.4.2006,  10:23 Найти цитируемый пост)
Вопрос такой: как сделать, чтобы после создания node'a сразу редактировалось его имя. То есть при создании задаем имя по умолчанию, и сразу курсор установлен на переименования пользователем.  

Воспользуйся макросом TreeView_EditLabel, который живёт в CommCtrl.pas или же посылай сообщение TVN_BEGINLABELEDIT итему. 

Код

  TreeView_EditLabel(TreeView1.Handle, TreeView1.Selected.ItemId);
 

Автор: sani79 21.4.2006, 10:52
_hunter,  хм.. либо я ничего не понимаю, либо у дерева нет метода select, есть selected, который возвращает текущий узел. 

Автор: _hunter 21.4.2006, 10:57
а зачем он? текущий узел у тебя будет "после создания node'a" 

Автор: sani79 21.4.2006, 11:00
Yanis,  А как послать его (TVN_BEGINLABELEDIT) конкретному элементу, а не форме? Через WM_NOTIFY?

Добавлено @ 11:09 
_hunter,  Только что пробовал текущий узел не меняется после создания нового, а остается прежним. Кстати ларчик похоже просто открывался: у узлов есть функция EditText, я ее почему то не нашел сразу. То есть делаем node.EditText и начинается редактирование. Единственно остается вопрос как поймать событие, завершение переименование нода, то есть когда пользователь пимпает Enter. 

Автор: Yanis 21.4.2006, 11:14
Цитата(sani79 @  21.4.2006,  11:00 Найти цитируемый пост)
А как послать его (TVN_BEGINLABELEDIT) конкретному элементу, а не форме?

Код

SendMessage(TreeView1.Handle, TVM_EDITLABEL, 0, LongInt(TreeView1.Selected.ItemId));
 

Автор: sani79 21.4.2006, 11:18
Yanis,  Спасибо. Кстати, событие срабатывающее после редактирование это Treeview.OnEdited.  Вопрос решен. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)