Страница: 1 |
Вопрос: Выделить строку в ЛистБоксе. | Добавлено: 17.06.08 15:47 |
Автор вопроса: ![]() |
Имеется приложение "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 Автор ответа: ![]() ![]() Вопросов: 5 Ответов: 100 |
Профиль | Цитата | #1 | Добавлено: 17.06.08 16:21 |
LB_SETSEL - работает только если у листбокса есть стиль LBS_MULTIPLESEL.
Попробуй LB_SETCURSEL. |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 278109632 Вопросов: 42 Ответов: 3949 |
Web-сайт: Профиль | Цитата | #2 | Добавлено: 18.06.08 01:29 |
Или установи листбоксу атрибут стиля LBS_MULTIPLESEL. |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 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 Автор ответа: ![]() ![]() Вопросов: 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 Автор ответа: ![]() ![]() Вопросов: 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 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 6 Ответов: 31 |
Профиль | Цитата | #6 | Добавлено: 19.06.08 10:55 |
Спасибо за помощь! |
Страница: 1 |
|