Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: sobol79 04. 11. 2020, 15:48:47
-
Dobrý den,
obracím se o radu, neb už vážně nevím. Pomáhám si pomocí winapi, abych na podstrčeném (automatizace) ListView activeX kliknul na nějakou souřadnici, jejíž výpočet jsem už zvládnul a dokážu tam přesunout myš následovně.
Private Function SetMouseCursor() As Long
Dim row As Integer
Dim maxRow As Integer
Dim col As Integer
Dim maxColumn As Integer
Dim c As Integer
Dim fieldWidth As Long
Dim fieldHeight As Long
Dim lParam As Long
Dim typPoint As POINTAPI
Dim lRet As Long
Let row = Val(CurrentRow.Text)
Let col = Val(CurrentColumn.Text)
Let maxRow = Val(NumberOfRows.Text) - 1
Let maxColumn = Val(NumberOfColumns.Text) - 1
If row >= 0 And row <= maxRow And col >= 0 And col <= maxColumn Then
Let lParam = 0
Let fieldHeight = mListView.ListItems(row + 1).Height
typPoint.X = 0
For c = 1 To col
typPoint.X = typPoint.X + mListView.ColumnHeaders(c).Width
Next
typPoint.X = typPoint.X + 1
typPoint.Y = fieldHeight * (row + 1) + 3
lRet = ClientToScreen(mListView.hWnd, typPoint)
lRet = SetCursorPos(typPoint.X, typPoint.Y)
lRet = ScreenToClient(mListView.hWnd, typPoint)
lParam = MakeLong(typPoint.X, typPoint.Y)
End If
SetMouseCursor = lParam
End Function
Funkce mi vrátí validní long, zkoušel jsem dělit i modulo.
Framework mi invokuje tlačítko, které zajistí toto zavolání a mělo by dojít ke kliku na tu buňku, což se ale vizuálně neděje. Tlačítko má tuto obslužnou událost.
Private Sub LC_Click()
Dim lParam As Long
lParam = SetMouseCursor
PostMessage mListView.hWnd, WM_LBUTTONDOWN, 0&, lParam
PostMessage mListView.hWnd, WM_LBUTTONUP, 0&, lParam
End Sub
A nemůžu a nemůžu přijít na chybu.
Pomůže mi, prosím, někdo ?
-
Jedná se o VB6 kde Long má 32 bitů a Integer 16.