Newsgroup: it.comp.appl.access
Titolo: Mouse dove sei? Intestzione, corpo, piè pagina form?

Buon giorno!
All'evento KeyPress su form ho la necessità di comprendere dove è posizionato il mouse.
 
 
 
Potrei chiamare GetCursorPos ma è inutilizzabile, perché ho la necessità di comprendere dove è posizionato il mouse, anzi su quale area della form è posizionato, se sull'intestazione, sul piè pagina o sul corpo. Sulla base dei queste coordinate poi all'evento KeyPress sottende una procedura condizionata.
 
Grazie
 
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI ' This holds the logical cursor information
   x As Long
   y As Long
 End Type
 
Daniele

Ciao Daniele,
KeyPress si scatena su Tastiera non su Mouse... quindi che attinenza puoi avere ...?
 
Diciamo che puoi leggere con l'API le coordinate del MOUSE, riportarle al CLIENT della Form con l'API ScreenToClient, a quel punto le converti in TWIPS, e, a seconda dell'altezza dell'Header,Detail e Footer, al netto dei Bordi trovi esattamente la posizione.
 
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function ScreenToClient Lib "user32" (ByVal hWnd As Long, lpPoint As POINTAPI) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
 
 
Dim pt As POINTAPI
Dim lRetVal As Long
Dim lValRet As Long
'
Call GetCursorPos(pt)
Call ScreenToClient(Me.hWnd, pt)
 
Converti in TWIPS... puoi evitare le API ed usare 15
Select case pt.y
   Case < Me.Section(acHeader).Height
      Msgbox "SONO NELL'HEADER"
   Case < Me.Section.(acHeader).Height+Me.Section.(acDetail).Height
      Msgbox "SONO NEL CORPO"
   Case else
      Msgbox "SONO NEL FOOTER"
End Select
 
Prova ad Affinarla, l'ho buttata giù a mano..
 
@Alex


Scusa ho datoper scontato... intendevo di moltiplicare per 15
 
Select case pt.y * 15
 
E' un po approssimativo, ma secondo me non val la pena scomodare le altre API...
 
@Alex

Il giorno venerdì 30 giugno 2017 15:56:30 UTC+2, @Alex ha scritto:

In pratica ho una pedaliera come questa 
https://www.delcomproducts.com/images/FSDualC.jpg
.
Sono un foot switch a due che emula di fatto una tastiera con DUE tasti (programmabili).
Quando l'utente utilizza i pedali ed il mouse è sull'intenstazione della formdella form viene di fatto invocato forward / rewind record, quando invece è su un'altra area devo adottare un comportamento diverso (scorrimento di pagine PDF).
Ovviamente Alex il tuo codice scritto al volo è valido sia quando la form è a tutto schermo, sia quando non lo è avendo l'hwdn della form.
Grazie!


molto interessante.
 
sei gentile a comunicarci il modello dei 2 pulsanti?
dovrei anch'io programmare una maschera con la pressione di 2 tasti

 Grazie!
 
Bene allora abbiamo risolto con poco...!
Ciao ben risentito.
 
@Alex


ScreenToClient funziona megglio se preceduta da GetCursorPos, altrimenti resitusce un POINTAPI non attendibile :-)
Grazie


Scythe USB Foot Switch II Pedaliera per PC a 2 Pedali, Nero

 Grazie
 
Scusa Daniele, ma il mio codice cosa diceva...????
 
Call GetCursorPos(pt)
Call ScreenToClient(Me.hWnd, pt) 
 
Sbaglio o suggerivo ScreenToClient preceduta da GetCursorPos... non a caso...diciamo che NON HA SENSO il contrario.
 
@Alex


Si chiama "SVISTA", nel senso che proprio non l'ho VISTA! Grazie! Sorry!
;-)