Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: sobol79 04. 11. 2020, 15:48:47

Název: Kliknutí na buňku ListView pomocí Send/PostMessage
Přispěvatel: 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ě.

Kód: [Vybrat]
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.

Kód: [Vybrat]
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 ?
Název: Re:Kliknutí na buňku ListView pomocí Send/PostMessage
Přispěvatel: sobol79 04. 11. 2020, 15:58:38
Jedná se o VB6 kde Long má 32 bitů a Integer 16.