listview subitem

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
iolaus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 19.03.2002 (Вт) 18:33
Откуда: Москва

listview subitem

Сообщение iolaus » 03.06.2005 (Пт) 12:26

есть Listview как report

как определить по какому subitemу в строке был клик???
This message will self destruct in five seconds!!!

iolaus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 19.03.2002 (Вт) 18:33
Откуда: Москва

Сообщение iolaus » 03.06.2005 (Пт) 13:58

для двойного клика сделал так:
Код: Выделить всё
Dim dblclk As Boolean
Private Sub FirmList_DblClick()
dblclk = True
End Sub
Private Sub FirmList_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
If dblclk = True Then
    dblclk = False
    Select Case x
    Case Is < 2800
        Call DblCkick(0)
    Case 2800 To 2800 + 1666
        Call DblCkick(1)
    Case 2800 + 1667 To 2800 + 1667 + 1667
        Call DblCkick(2)
    Case 2800 + 1667 + 1666 To 2800 + 1667 + 1667 + 1667
        Call DblCkick(3)
    End Select
End If
End Sub

а по нормальному можно определить???
This message will self destruct in five seconds!!!

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 03.06.2005 (Пт) 20:21

Только учти, что при изменении ширины столбцов нужно границы изменения Х пересчитывать.

Alex Mals
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 11.12.2004 (Сб) 18:09

Сообщение Alex Mals » 04.06.2005 (Сб) 1:38

MSDN NM_CLICK

iolaus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 19.03.2002 (Вт) 18:33
Откуда: Москва

Сообщение iolaus » 04.06.2005 (Сб) 15:32

ну короче вот так сделал...:
Код: Выделить всё
Dim dblclk As Boolean
Private Sub FirmList_DblClick()
dblclk = True
End Sub
Private Sub FirmList_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
If dblclk = True Then
    dblclk = False
    Select Case x
    Case Is < FirmList.ColumnHeaders(1).Width + FirmList.ColumnHeaders(2).Width
        Call DblCkick(0)
    Case FirmList.ColumnHeaders(1).Width + FirmList.ColumnHeaders(2).Width To FirmList.ColumnHeaders(1).Width + FirmList.ColumnHeaders(2).Width + FirmList.ColumnHeaders(3).Width
        Call DblCkick(1)
    Case FirmList.ColumnHeaders(1).Width + FirmList.ColumnHeaders(2).Width + FirmList.ColumnHeaders(3).Width To FirmList.ColumnHeaders(1).Width + FirmList.ColumnHeaders(2).Width + FirmList.ColumnHeaders(3).Width + FirmList.ColumnHeaders(4).Width
        Call DblCkick(2)
    Case FirmList.ColumnHeaders(1).Width + FirmList.ColumnHeaders(2).Width + FirmList.ColumnHeaders(3).Width + FirmList.ColumnHeaders(4).Width To FirmList.ColumnHeaders(1).Width + FirmList.ColumnHeaders(2).Width + FirmList.ColumnHeaders(3).Width + FirmList.ColumnHeaders(4).Width + FirmList.ColumnHeaders(5).Width
        Call DblCkick(3)
    End Select
End If
End Sub
This message will self destruct in five seconds!!!

iolaus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 19.03.2002 (Вт) 18:33
Откуда: Москва

Сообщение iolaus » 04.06.2005 (Сб) 15:32

Alex Mals
что-то не воткнул как пользоваться???
This message will self destruct in five seconds!!!

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 05.06.2005 (Вс) 11:24

Насколько я понял, тут в строках Case идёт расчёт диапазона Х в зависимости от ширины колнок:

Колнка 2, например, это от ширины колонки 1 до суммы ширин колнок 1 и 2.

SHURUP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 440
Зарегистрирован: 15.09.2004 (Ср) 14:24
Откуда: Ирпень, Украина

Сообщение SHURUP » 05.06.2005 (Вс) 21:36

Вот то-же, но приятнее выглядит и не зависит от количества колонок
Код: Выделить всё
Dim dblclk As Boolean
Private Sub FirmList_DblClick()
dblclk = True
End Sub

Private Sub FirmList_MouseUp(Button As Integer, Shift As Integer, X As Single, y As Single)
Dim colum As ColumnHeader
If dblclk = True Then
    dblclk = False
    For Each colum In FirmList.ColumnHeaders
        If X > colum.Left And X < colum.Left + colum.Width Then
            MsgBox "SubIttem = " & colum.SubItemIndex
            Exit For
        End If
    Next
End If
End Sub
Нам чужого не надо, но своё мы возьмем, чьё бы оно ни было...


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

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

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

    TopList