Страница: 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
Ответить
|
Номер ответа: 1 Автор ответа: Holsten
Вопросов: 5 Ответов: 100
|
Профиль | | #1
|
Добавлено: 17.06.08 16:21
|
LB_SETSEL - работает только если у листбокса есть стиль LBS_MULTIPLESEL.
Попробуй LB_SETCURSEL.
Ответить
|
Номер ответа: 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 не посылается свернутому окну... Ну, разверни
Ответить
|
Страница: 1 |
Поиск по форуму