Differenze tra le versioni di "Conoscere le coordinate correnti del mouse sul Form senza tenere premuto un tasto del mouse"
Da Gambas-it.org - Wikipedia.
(Creata pagina con "Per conoscere le coordinate correnti del mouse sul ''Form'', anche in presenza di eventuali Controlli grafici, senza tenere premuto un tasto del mouse, si pu adottare il segue...") |
|||
(4 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 1: | Riga 1: | ||
− | Per conoscere le coordinate correnti del mouse sul ''Form'', | + | Per conoscere le coordinate correnti del mouse sul ''Form'', sul quale siano presenti uno o più Controlli grafici, senza tenere premuto un tasto del mouse, si possono adottare alcune modalità. <SUP>[[[#Note|nota 1]]]</sup> |
+ | Public Sub Form_Open() | ||
+ | |||
+ | Me.Tracking = True | ||
+ | TextArea1.Tracking = True | ||
+ | |||
+ | Object.Attach(Me, Me, "Controllo") | ||
+ | Object.Attach(TextArea1, Me, "Controllo") | ||
+ | |||
+ | End | ||
+ | |||
+ | |||
+ | Public Sub Controllo_MouseMove() | ||
+ | |||
+ | Me.Title = "X = " & CStr(Mouse.ScreenX - Me.X) & | ||
+ | " Y = " & CStr(Mouse.ScreenY - Me.Y) | ||
+ | |||
+ | End | ||
+ | oppure quest'altro codice: | ||
+ | Public Sub Form_Open() | ||
+ | |||
+ | Me.Tracking = True | ||
+ | TextArea1.Tracking = True | ||
+ | |||
+ | End | ||
+ | |||
+ | |||
+ | Public Sub Form_MouseMove() | ||
+ | |||
+ | Me.Title = "X = " & CStr(Mouse.ScreenX - Me.X) & | ||
+ | " Y = " & CStr(Mouse.ScreenY - Me.Y) | ||
+ | |||
+ | End | ||
+ | |||
+ | |||
+ | Public Sub TextArea1_MouseMove() | ||
+ | |||
+ | Me.Title = "X = " & CStr(Mouse.ScreenX - Me.X) & | ||
+ | " Y = " & CStr(Mouse.ScreenY - Me.Y) | ||
+ | |||
+ | End | ||
+ | |||
+ | |||
+ | ===Usando un ''Timer''=== | ||
Public Sub Form_Open() | Public Sub Form_Open() | ||
Riga 9: | Riga 52: | ||
Public Sub Timer1_Timer() | Public Sub Timer1_Timer() | ||
− | Me.Title = Mouse.ScreenX - Me.X | + | Me.Title = "X = " & CStr(Mouse.ScreenX - Me.X) & |
+ | " Y = " & CStr(Mouse.ScreenY - Me.Y) | ||
End | End | ||
Riga 26: | Riga 70: | ||
End | End | ||
+ | |||
+ | |||
+ | ===Ponendo in osservazione il file-device del Mouse=== | ||
+ | Si aprirà il file-device "/dev/input/muse0" e lo si porrà in "osservazione": | ||
+ | Private fl As File | ||
+ | |||
+ | |||
+ | Public Sub form_Open() | ||
+ | |||
+ | <FONT Color=gray>' ''Provvede a eliminare la protezione del file-device del mouse prescelto:''</font> | ||
+ | Dim pw As String | ||
+ | pw = InputBox("Immettere la propria password di sistema...") | ||
+ | Shell "echo " & pw & " | sudo -S chmod 444 /dev/input/mouse0" Wait | ||
+ | |||
+ | <FONT Color=gray>' ''Apre il file-device "/dev/input/mouse0" e lo pone in "osservazione":''</font> | ||
+ | fl = Open "/dev/input/mouse0" For Read Watch | ||
+ | |||
+ | End | ||
+ | |||
+ | |||
+ | Public Sub File_Read() | ||
+ | |||
+ | If (Mouse.ScreenX < Me.X) Or (Mouse.ScreenX > (Me.X + Me.W)) Or | ||
+ | (Mouse.ScreenY < Me.Y) Or (Mouse.ScreenY > (Me.Y + Me.H)) Then Return | ||
+ | |||
+ | Label1.Text = (Mouse.ScreenX - Me.X) & " " & (Mouse.ScreenY - Me.Y) | ||
+ | |||
+ | End | ||
+ | |||
+ | |||
+ | =Note= | ||
+ | [1] Vedere anche le seguenti pagine: | ||
+ | * [[Conoscere le coordinate correnti del mouse sullo schermo]] | ||
+ | * [[Sollevare l'Evento MouseMove() di un Oggetto grafico spostando su di esso il mouse senza tenere premuto un suo tasto]] |
Versione attuale delle 23:32, 27 nov 2023
Per conoscere le coordinate correnti del mouse sul Form, sul quale siano presenti uno o più Controlli grafici, senza tenere premuto un tasto del mouse, si possono adottare alcune modalità. [nota 1]
Public Sub Form_Open() Me.Tracking = True TextArea1.Tracking = True Object.Attach(Me, Me, "Controllo") Object.Attach(TextArea1, Me, "Controllo") End Public Sub Controllo_MouseMove() Me.Title = "X = " & CStr(Mouse.ScreenX - Me.X) & " Y = " & CStr(Mouse.ScreenY - Me.Y) End
oppure quest'altro codice:
Public Sub Form_Open() Me.Tracking = True TextArea1.Tracking = True End Public Sub Form_MouseMove() Me.Title = "X = " & CStr(Mouse.ScreenX - Me.X) & " Y = " & CStr(Mouse.ScreenY - Me.Y) End Public Sub TextArea1_MouseMove() Me.Title = "X = " & CStr(Mouse.ScreenX - Me.X) & " Y = " & CStr(Mouse.ScreenY - Me.Y) End
Usando un Timer
Public Sub Form_Open() Timer1.Delay = 20 End Public Sub Timer1_Timer() Me.Title = "X = " & CStr(Mouse.ScreenX - Me.X) & " Y = " & CStr(Mouse.ScreenY - Me.Y) End Public Sub Form_Enter() Timer1.Start End Public Sub Form_Leave() Timer1.Stop End
Ponendo in osservazione il file-device del Mouse
Si aprirà il file-device "/dev/input/muse0" e lo si porrà in "osservazione":
Private fl As File Public Sub form_Open() ' Provvede a eliminare la protezione del file-device del mouse prescelto: Dim pw As String pw = InputBox("Immettere la propria password di sistema...") Shell "echo " & pw & " | sudo -S chmod 444 /dev/input/mouse0" Wait ' Apre il file-device "/dev/input/mouse0" e lo pone in "osservazione": fl = Open "/dev/input/mouse0" For Read Watch End Public Sub File_Read() If (Mouse.ScreenX < Me.X) Or (Mouse.ScreenX > (Me.X + Me.W)) Or (Mouse.ScreenY < Me.Y) Or (Mouse.ScreenY > (Me.Y + Me.H)) Then Return Label1.Text = (Mouse.ScreenX - Me.X) & " " & (Mouse.ScreenY - Me.Y) End
Note
[1] Vedere anche le seguenti pagine: