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.