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

Вопрос такой - как запрограммировать событие Click для treeview, который динамически добавлен на форму. Вот здесь эта проблема затронута, но не раскрыта.
Мне непонятно, что имел ввиду автор, говоря
Alexey Kudinov Затем в runtime добавлять свой контрол так, чтобы он образовал с контролом, добавленным в дизайн тайм, массив. Соответственно отлавливать событие от вашего контрола в обработчике событий по индексу
Самостоятельно решить задачу мне так и не удалось. Существенный ньюанс, что для обработки события передается параметр - кликнутый объект Node.
Может кто-нибудь сталкивался с решением?
...
Рейтинг: 0 / 0
Программирование событий динамического контрола
    #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
Программирование событий динамического контрола
    #36620162
Infinity Creator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
13-й квартал,

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


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