Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Выделить строку в ЛистБоксе. Добавлено: 17.06.08 15:47  

Автор вопроса:  vall
Имеется приложение "User program management", в нем есть окно -ЛистБокс со списком директорий. Подскажите, как выделить нужную директорию?(Как если бы я отметил ее мышкой!)

Это не работает! УВЫ!!!


Private Sub optBook()
Dim Index As Integer
Dim nCnt As Long, ctl As Control, Id As Integer
'====================================================
Do
hwnd = FindWindow("#32770", "User program management")
hwndEd = FindWindowEx(hwnd, 0, "ListBox", vbNullString)
Loop While hwndEd = 0
Dim num As Long
Dim i As Integer
Dim txt As String
Dim entry As String
Dim length As Long

    ' See how many entries the list has.
    num = SendMessage(hwndEd, LB_GETCOUNT, 0, 0)

    ' Read each entry.
    For i = 0 To num - 1
        ' See how long the entry is.
        length = SendMessage(hwndEd, LB_GETTEXTLEN, i, _
            0)

        ' Make entry big enough.
        entry = Space$(length + 1)

        ' Get the entry.
        length = SendMessage(hwndEd, LB_GETTEXT, i, _
            ByVal entry)
        txt = Left$(entry, length) & vbCrLf
    If txt Like "*51100*" Then SendMessage hwndEd, LB_SETSEL, 1, i: Exit For

'Debug.Print (txt)
    Next i

End Sub

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 Holsten



Вопросов: 5
Ответов: 100
 Профиль | | #1 Добавлено: 17.06.08 16:21
LB_SETSEL - работает только если у листбокса есть стиль LBS_MULTIPLESEL.
Попробуй LB_SETCURSEL.

Ответить

Номер ответа: 2
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #2
Добавлено: 18.06.08 01:29
Или установи листбоксу атрибут стиля LBS_MULTIPLESEL.

Ответить

Номер ответа: 3
Автор ответа:
 vall



Вопросов: 6
Ответов: 31
 Профиль | | #3 Добавлено: 18.06.08 10:12
С быбором строки и установки фокуса на нем я решил, а вот кликнуть как бы мышкой не получается.

If txt Like "*DoorsProd*" Then SendMessage hwndEd, LB_SETCURSEL, i, 0:  SendMessage hwndEd, WM_SETFOCUS, 1, 1: SendMessage hwndEd, WM_LBUTTONDBLCLK, ByVal MK_LBUTTON, ByVal 1: Exit For


WM_LBUTTONDBLCLK не реагирует почему то.
 Тут один решил это, но я не понял как, какое меню бар!?
Может ты обьяснишь?
List item is identifying WM_LBUTTONDBLCLK, but if I minize this window, it can't identify cursor position. I want to click List view item whether it is minimized or not.

I found some solution for this, what I have done is, I highlighted required list item in external application. In exnternal application, it has menu bar, if I click particual menu, it is sending WM_LBUTTONDBLCLK event to selected list item. So, after selecting a list item in external applicaiton, I am sending click event to particular menu item and that is sending WM_LBUTTONDBLCLK to list item.

So, everything is working fine.

Ответить

Номер ответа: 4
Автор ответа:
 Holsten



Вопросов: 5
Ответов: 100
 Профиль | | #4 Добавлено: 18.06.08 15:04
SendMessage hwndEd, WM_LBUTTONDBLCLK, ByVal MK_LBUTTON, ByVal 1
ByVal 1?
Попробуй получить RECT-координаты item через LB_GETITEMRECT, и передать в lParam (WM_LBUTTONDBLCLK) указатель на координаты курсора, лежащие в этой области. Может в этом причина?

Ответить

Номер ответа: 5
Автор ответа:
 Holsten



Вопросов: 5
Ответов: 100
 Профиль | | #5 Добавлено: 18.06.08 17:51
Ща проверил, именно в этом.

    Dim rcitm As RECT
    Dim lpr As Long
    SendMessage hwndEd, LB_SETCURSEL, i, 0:
    SendMessage hwndEd, LB_GETITEMRECT, i, ByVal rcitm
    lpr = (rcitm.Left And &HFFFF) Or ((rcitm.Top And &HFFFF) * 65536)
    SendMessage hwndEd, WM_LBUTTONDBLCLK, 0, ByVal lpr

А насчет того, что WM_LBUTTONDBLCLK не посылается свернутому окну... Ну, разверни:)

Ответить

Номер ответа: 6
Автор ответа:
 vall



Вопросов: 6
Ответов: 31
 Профиль | | #6 Добавлено: 19.06.08 10:55
Спасибо за помощь!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам