powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Listview1
11 сообщений из 11, страница 1 из 1
Listview1
    #37899694
Slash232
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите в коде
Код: vbnet
1.
2.
3.
4.
5.
Private Sub ListView1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
If Button = vbRightButton Then
Start.PopupMenu mnu
End If
End Sub


что необходимо изменить чтобы контекстное меню открывалось только при нажатии правой клавишей мыши по какой нибудь строчке а не при нажатии в любом месте listview. Заранее огромное спасибо!
...
Рейтинг: 0 / 0
Listview1
    #37899697
Slash232
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вопрос как в данном коде назначить при нажатии правой клавиши мыши некоей переменной vibor значение текста указанного в 3 столбце выбранной строки?
...
Рейтинг: 0 / 0
Listview1
    #37899700
Slash232
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Второй вопрос решил, остается не решенным первый((
...
Рейтинг: 0 / 0
Listview1
    #37899704
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
If Not ListView1.SelectedItem Is Nothing Then...

?
...
Рейтинг: 0 / 0
Listview1
    #37899715
Slash232
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Плохо все равно т.к. строчка какая то выделенной остается когда нажимаю в другой части listview. Подозреваю что тут чтото связанное с наведением курсора на строчку нужно прописать, но сам допетрить как не могу. Помогите пожста. Заранее большое спасибо!!!
...
Рейтинг: 0 / 0
Listview1
    #37899722
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
If Not ListView1.HitTest(x, y) Is Nothing Then

?
...
Рейтинг: 0 / 0
Listview1
    #37899723
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Listview1
    #37899731
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slash232,
я давно сделал вот так

Код: vbnet
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.
Private Sub ListView1_MouseUp(Index As Integer, Button As Integer, Shift As Integer, x As Single, y As Single)
    Dim HTest As String
    On Error GoTo SkipSelect1:
    HTest = ListView1(Index).HitTest(x, y)
    ConfigureMenu
    GoTo SkipSelect2
SkipSelect1:
    SelectNone_Click
    Exit Sub
SkipSelect2:
    If Button = vbRightButton Then
        PopupMenu EditMenu
    End If
End Sub

Private Sub SelectNone_Click()
    Dim SC As Integer
    Dim i As Integer
...
            SC = ListView1(0).ListItems.count
            If SC = 0 Then Exit Sub
            For i = 1 To SC
                ListView1(0).ListItems(i).Selected = False
            Next i
...
End Sub



Тупо счас смотрел на свой код чтоб понять зачем мне HitTest
Потом понял: если тыкаемся туда где нет строчки, то Hittest сгенерит ошибку и уведет прогу на SkipSelect1, что снимет выделение через SelectNone_Click и PopupMenu не покажет.
А если тыкнемся на строчку, то сработает PopupMenu да еще строчка единственная выделится, что можно как раз использовать в качестве параметров для пунктов меню,
т.е. Selected будет нужной строчкой куда тыкнулся.
ConfigureMenu у меня много чего делает, но в частности проверяет еще, единственная ли строчка выделена и в зависимости от этого делает пункты меню enabled/disabled.
Например, можно delete много строчек, а view или properties только если выделена единственная строка.

Этот метод конечно через одно место (до такой степени, что я смотрел на Hittest и первое что хотел, удалить его от туда), но работает как часики в лучших традициях виндов и за несколько лет что прошло с тех пор как эту фигню наляпал, не подводил.
...
Рейтинг: 0 / 0
Listview1
    #37899736
Slash232
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо решил вопрос по другому:

Код: vbnet
1.
2.
3.
4.
5.
Private Sub ListView1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
If Button = vbRightButton And x > ListView1.SelectedItem.Left And x < (ListView1.SelectedItem.Left + ListView1.SelectedItem.Width) And y > ListView1.SelectedItem.Top And y < (ListView1.SelectedItem.Top + ListView1.SelectedItem.Height) Then
Start.PopupMenu mnu
End If
End Sub
...
Рейтинг: 0 / 0
Listview1
    #37899739
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slash232Спасибо решил вопрос по другому:

Код: vbnet
1.
x > ListView1.SelectedItem.Left And x < (ListView1.SelectedItem.Left + ListView1.SelectedItem.Width) And y > ListView1.SelectedItem.Top And y < (ListView1.SelectedItem.Top + ListView1.SelectedItem.Height)

Тогда надо еще не забыть поделить координаты на Screen.TwipsPerPixelX, Screen.TwipsPerPixelY
...
Рейтинг: 0 / 0
Listview1
    #37899748
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM,

Хотя вру... Если у вас ScaleMode формы уже в Twip'ах, то все правильно, координаты не надо сводить коээфицикнтами...
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Listview1
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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