Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Программирование событий динамического контрола / 3 сообщений из 3, страница 1 из 1
10.05.2010, 09:36
    #36619382
Infinity Creator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программирование событий динамического контрола
Здравствуйте.

Вопрос такой - как запрограммировать событие Click для treeview, который динамически добавлен на форму. Вот здесь эта проблема затронута, но не раскрыта.
Мне непонятно, что имел ввиду автор, говоря
Alexey Kudinov Затем в runtime добавлять свой контрол так, чтобы он образовал с контролом, добавленным в дизайн тайм, массив. Соответственно отлавливать событие от вашего контрола в обработчике событий по индексу
Самостоятельно решить задачу мне так и не удалось. Существенный ньюанс, что для обработки события передается параметр - кликнутый объект Node.
Может кто-нибудь сталкивался с решением?
...
Рейтинг: 0 / 0
11.05.2010, 00:33
    #36620086
Программирование событий динамического контрола
Infinity Creator,

В теме о "больших деревьях" частично касались решения (которое под номером 2 по ссылке): надо объявить на уровне класса переменную WithEvents соответствующего типа, инициализировать её ссылкой на экземпляр объекта (созданного динамически элемента управления), и ловить события в автоматически (при инициализации) подключаемых обработчиках:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Option Explicit

Private WithEvents Tree As MSComctlLib.TreeView

Private Sub CommandButton1_Click()
 Dim TreeCtl As MSForms.Control
 Set TreeCtl = Controls.Add("MSComctlLib.TreeCtrl.2", "TreeView1", False)
 Set Tree = TreeCtl
 With Tree
    .Nodes.Add , , "kroot", "Root"
    .Nodes.Add "kroot", tvwChild, "k1", "Child 1"
    .Nodes.Add "k1", tvwChild, "k1.1", "Child 1.1"
    .Nodes.Add "kroot", tvwChild, "k2", "Child 2"
    .LabelEdit = tvwManual
 End With
 With TreeCtl
   .Visible = True 'не сдвинется, если сначала не показать
   .Visible = False
   .Move  10 ,  10 ,  120 ,  100 
   .Visible = True
   .SetFocus
 End With
 CommandButton1.Enabled = False
End Sub

Private Sub Tree_NodeClick(ByVal Node As MSComctlLib.Node)
 Debug.Print "Node """ & Node.Text & """ clicked"
End Sub
...
Рейтинг: 0 / 0
11.05.2010, 04:32
    #36620162
Infinity Creator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программирование событий динамического контрола
13-й квартал,

Огромное спасибо. Хотя за ночь разобрался сам и хотел сейчас код свой выложить, потому что решение полезным может быть для кого-нить еще.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Программирование событий динамического контрола / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]