Как програмно кликнуть на узел в TreeView

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Как програмно кликнуть на узел в TreeView

Сообщение Ruslan Demidow » 07.05.2004 (Пт) 11:08

При поиске текста в TreeView я пробегаю по узлам и ищу текст.
Если нашёл - то я знаю идентификатор узла.
Как по нему програмно щёлкнуть?
Вот так я ищу текст. (SearchText - текстбокс со строкой текста).
Код: Выделить всё
Private Sub cmdQuickSearch_Click()
    Dim i As Long, n As Long
    Dim intNode As Node
    Dim intSearchResult As String, NodeKey As String
    If Len(SearchText.Text) = 0 Then
        Exit Sub
    End If
    i = SabjList.SelectedItem.Index + 1
    If i = 0 Then
        i = 1
    End If
    For n = i To SabjList.Nodes.Count
     
        Set intNode = SabjList.Nodes.Item(n)
        intSearchResult = Trim$(intNode.Text)
        If InStr(1, intSearchResult, Trim$(SearchText.Text)) <> 0 Then
            SabjList.SelectedItem = intNode
            intNode.Expanded = True
            SabjList.SetFocus
            Exit Sub
        End If
    Next
        MsgBox "Не найдено."
End Sub



Если после SabjList.SetFocus я вызываю процедуру SabjList_NodeClick(ByVal Node As MSComctlLib.Node) c intNode в качестве параметра - то VB ругается на несоответствие типов.

GoGosha
Постоялец
Постоялец
 
Сообщения: 642
Зарегистрирован: 02.08.2002 (Пт) 9:14
Откуда: Russia

Сообщение GoGosha » 07.05.2004 (Пт) 12:19

Node.Expanded = True
Где Node - соответственно узел
http://poetry.mooo.com
http://poetry.myboard.info
«Человек есть нечто, что до́лжно превзойти» (Ф. Ницше)

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 07.05.2004 (Пт) 12:54

GoGosha писал(а):Node.Expanded = True
Где Node - соответственно узел

Не. Я наверное неверно сформулировал вопрос.
Посмотри в коде - я там устанавливаю это свойство.
TreeView переходит на данный узел, выбирает его , раскрывает его.

Но вот само сообщение в ТекстБоксе появляется только после щелчка на узле мышью. А при переходе на него - нет.
У меня на событие SabjList_NodeClick выводится сообщение, которое закреплено за этим узлом.
Т.е. при щелчке мышью на узле - VB не ругается и в качестве параметра нормально получает Node. А вот если ему програмно указать текущий узел - ругается на несоответствие типов.
Где-то видно я не докрутил. :oops:

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 07.05.2004 (Пт) 15:13

.NodeExpanded = True - это развернуть ветку, а выделить - .Nodes(<ID>).Selected=True, где <ID> - это либо Index узла, либо Key


только при программном выделении узла событие NodeClick не происходит... рекомендую код прописанный у тебя сейчас в этом событии вынести в отдельную процедуру и вызывать из NodeClick, и из cmdQuickSearch_Click... как определять выделеный узел, это уже на твое усмотрение, либо передавай в качестве параметра, либо определяй в самой процедуре
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 08.05.2004 (Сб) 9:01

Спасибо, попробую.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 2

    TopList