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'', anche in presenza di eventuali Controlli grafici, senza tenere premuto un tasto del mouse, si pu adottare il seguente codice:
+
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>&#091;[[#Note|nota 1]]&#093;</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: