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.
(3 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 1: | Riga 1: | ||
− | 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 | + | 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: