powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Аналог ListBox_Click для ListView в режиме просмотра lvwReport
13 сообщений из 13, страница 1 из 1
Аналог ListBox_Click для ListView в режиме просмотра lvwReport
    #37890157
Mishel97
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени суток!

Код

Private Sub ListView1_Click()

For intR = 1 To ListView1.ListItems.Count
If ListView1.ListItems(intR).Selected = True Then
For intA = 1 To 10
If ListView1.ListItems(intR).SubItems(1) = Data(intA, 2) Then
MsgBox Data(intA, 2)
Exit Sub
End If
Next intA
End If
Next intR
End Sub

почти обрабатывает событие ListView1_Click(). Код работает, если сделать Click по элементам первого столбца ListView1, при этом элемент выделяется. Не работает, если сделать Click по элементам второго столбца, тоесть по ListItems(intR).SubItems(1).

Вопрос, - какой код будет обрабатывать ListView1_Click(), аналогично обработке ListBox1_Click()?
...
Рейтинг: 0 / 0
Аналог ListBox_Click для ListView в режиме просмотра lvwReport
    #37890200
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня работает, что я делаю не так?

пример в студию
...
Рейтинг: 0 / 0
Аналог ListBox_Click для ListView в режиме просмотра lvwReport
    #37890230
Mishel97
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Аналог ListBox_Click для ListView в режиме просмотра lvwReport
    #37891794
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо поставить свойство FullRowSelect=True и лучше обрабатывать событие ItemClick вместо Click
...
Рейтинг: 0 / 0
Аналог ListBox_Click для ListView в режиме просмотра lvwReport
    #37891795
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо поставить свойство FullRowSelect=True и лучше обрабатывать событие ItemClick вместо Click
...
Рейтинг: 0 / 0
Аналог ListBox_Click для ListView в режиме просмотра lvwReport
    #37891808
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в принципе, весь тот код можно сократить до одной строчки:
Код: vbnet
1.
2.
3.
4.
5.
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)

If Item.SubItems(1) = Data(Item.Index, 2) Then MsgBox Data(Item.Index, 2)

End Sub



и на будущее - не нужно искать в цикле выделенный элемент - у ListView есть свойство SelectedItem
...
Рейтинг: 0 / 0
Аналог ListBox_Click для ListView в режиме просмотра lvwReport
    #37892374
Mishel97
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, … т. е. результаты превзошли все ожидания.


Ещё один вопрос невозможно обойти в аналоге ListBox_Click для ListView в режиме просмотра lvwReport – обработка события

Код: plaintext
1.
2.
3.
Private Sub ListView1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)
...

End Sub

Так

Код: plaintext
1.
2.
3.
4.
Private Sub ListView1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)

If Item.SubItems(1) = Data(Item.Index, 2) Then MsgBox Data(Item.Index, 2)

End Sub

не срабатывает - Run-time error '424' Object required.

Так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Private Sub ListView1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)

For intR = 1 To ListView1.ListItems.Count
  
 If ListView1.SelectedItem.Selected = True Then
  For intA = 1 To 10
          If ListView1.ListItems(intR).SubItems(1) = Data(intA, 2) Then
            
            MsgBox Data(intA, 2)
          Exit Sub
          End If
  Next intA
 End If

Next intR

End Sub

срабатывает, но работает как Private Sub ListView1_Click() (отсутствует событие MouseUp) и не работает ни один из кодов:

Код: plaintext
If ListView1.SelectedItem.Index = -1 Then Exit Sub
Код: plaintext
If ListView1.SelectedItem.Selected = False Then Exit Sub
Код: plaintext
If ListView1.SelectedItem = Null Then Exit Sub

Вопрос, - какой код будет обрабатывать MouseUp для ListView1 в режиме просмотра lvwReport?
...
Рейтинг: 0 / 0
Аналог ListBox_Click для ListView в режиме просмотра lvwReport
    #37892990
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mishel97не срабатывает - Run-time error '424' Object required.естественно не срабатывает, откуда там возьмется Item? надо же не просто копипастить, а пытаться еще и разобраться.

Код: vbnet
1.
If ListView1.SelectedItem Is Nothing Then Exit Sub



Учимся использовать тэги оформления кода - FAQ
...
Рейтинг: 0 / 0
Аналог ListBox_Click для ListView в режиме просмотра lvwReport
    #37893094
Mishel97
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код:
Код: vbnet
1.
If ListView1.SelectedItem Is Nothing Then Exit Sub


не выводит из процедуры в этом коде (er. - '424')
Код: vbnet
1.
2.
3.
Private Sub ListView1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)
If Item.SubItems(1) = Data(Item.Index, 2) Then MsgBox Data(Item.Index, 2)
End Sub


и в этом коде
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub ListView1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)
For intR = 1 To ListView1.ListItems.Count   
If ListView1.SelectedItem.Selected = True Then 
 For intA = 1 To 10   
  If ListView1.ListItems(intR).SubItems(1) = Data(intA, 2) Then 
    MsgBox Data(intA, 2)         
  Exit Sub  
  End If 
 Next intA 
End If
Next intR
End Sub


Код из одной строки:
Код: vbnet
1.
2.
3.
Private Sub ListView1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)
If ListView1.SelectedItem.Index > 0 Then MsgBox ListView1.SelectedItem.SubItems(1),vbInformation
End Sub


работает без ошибок, однако срабатывает и при ListView1.SelectedItem.Index =0. Первый код и здесь не выводит из процедуры.

Сдедующий код похоже предназначен для обработки события ListView1_MouseUp.


PLACE THIS CODE IN A VBA MODULE

Код: 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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
'List View Hit Test constants
Private Const LVHT_ONITEMICON As Long = &H2
Private Const LVHT_ONITEMLABEL As Long = &H4
Private Const LVHT_ONITEMSTATEICON As Long = &H8
Private Const LVHT_ONITEM As Long = (LVHT_ONITEMICON Or _
LVHT_ONITEMLABEL Or _
LVHT_ONITEMSTATEICON)

Private Type LVHITTESTINFO
Pt As POINTAPI
flags As Long
item As Long
subitem As Long
End Type

Public Function GetSubItemRowCol(LV As ListView, ByVal x As Single
ByVal y As Single) As Variant  
                                                                                                                                            
Dim RetVal
Dim HitData(1)
Dim Hit As LVHITTESTINFO

With Hit
.Pt.x = x
.Pt.y = y
.flags = LVHT_ONITEM
End With

RetVal = SendMessage(LV.hWnd, LVM_SUBITEMHITTEST, 0&, Hit)
HitData(0) = Hit.item
HitData(1) = Hit.subitem

GetSubItemRowCol = HitData

End Function


THIS CODE IS FOR THE MOUSEUP EVENT

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Sub ListView1_MouseUp(ByVal Button As Integer, ByVal Shift A
Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y A
stdole.OLE_YPOS_PIXELS)

Dim Col
Dim Row
Dim RetVal

RetVal = GetSubItemRowCol(ListView1, x, y)
Row = RetVal(0)
Col = RetVal(1)

End Sub



Однако в строке Public Function GetSubItemRowCol(LV As ListView, ByVal x As Single ByVal y As Single) As Variant -
Compile error: Expected: list separator or).
...
Рейтинг: 0 / 0
Аналог ListBox_Click для ListView в режиме просмотра lvwReport
    #37893120
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mishel97Код:
Код: vbnet
1.
If ListView1.SelectedItem Is Nothing Then Exit Sub


не выводит из процедуры в этом коде (er. - '424')
Код: vbnet
1.
2.
3.
Private Sub ListView1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)
If Item.SubItems(1) = Data(Item.Index, 2) Then MsgBox Data(Item.Index, 2)
End Sub

еще раз - в этой процедуре нет объекта Item
Mishel97Однако в строке Public Function GetSubItemRowCol(LV As ListView, ByVal x As Single ByVal y As Single) As Variant -
Compile error: Expected: list separator or).ее надо написать в одну строку, а у вас - в две
...
Рейтинг: 0 / 0
Аналог ListBox_Click для ListView в режиме просмотра lvwReport
    #37893121
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mishel97Код:
Код: vbnet
1.
If ListView1.SelectedItem Is Nothing Then Exit Sub


не выводит из процедуры в этом коде (er. - '424')
Код: vbnet
1.
2.
3.
Private Sub ListView1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)
If Item.SubItems(1) = Data(Item.Index, 2) Then MsgBox Data(Item.Index, 2)
End Sub

еще раз - в этой процедуре нет объекта Item
Mishel97Однако в строке Public Function GetSubItemRowCol(LV As ListView, ByVal x As Single ByVal y As Single) As Variant -
Compile error: Expected: list separator or).ее надо написать в одну строку, а у вас - в две
...
Рейтинг: 0 / 0
Аналог ListBox_Click для ListView в режиме просмотра lvwReport
    #37893127
Mishel97
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Одна строка помогла.
Не все ошибки, в строке - Pt As POINTAPI - Compile error: User-defined type not defined.
...
Рейтинг: 0 / 0
Аналог ListBox_Click для ListView в режиме просмотра lvwReport
    #37893129
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нужно определить тип POINTAPI

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


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