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.
 
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 può adottare il seguente codice: <SUP>&#091;[[#Note|nota 1]]&#093;</sup>
+
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()
 
  Public Sub Form_Open()
 
   
 
   
   Timer1.Delay = 20
+
   Me.Tracking = True
 +
  TextArea1.Tracking = True
 +
 +
  Object.Attach(Me, Me, "Controllo")
 +
  Object.Attach(TextArea1, Me, "Controllo")
 
   
 
   
 
  End
 
  End
 
   
 
   
 
   
 
   
  Public Sub Timer1_Timer()
+
  Public Sub Controllo_MouseMove()
+
 
 
   Me.Title = "X = " & CStr(Mouse.ScreenX - Me.X) &
 
   Me.Title = "X = " & CStr(Mouse.ScreenX - Me.X) &
 
         "      Y = " & CStr(Mouse.ScreenY - Me.Y)
 
         "      Y = " & CStr(Mouse.ScreenY - Me.Y)
+
    
End
 
 
 
Public Sub Form_Enter()
 
 
   Timer1.Start
 
 
 
  End
 
  End
+
oppure quest'altro codice:
 
Public Sub Form_Leave()
 
 
  Timer1.Stop
 
 
End
 
oppure quest'altro:
 
 
  Public Sub Form_Open()
 
  Public Sub Form_Open()
 
   
 
   
Riga 50: Riga 40:
 
    
 
    
 
  End
 
  End
Questo secondo codice potrebbe essere abbreviato così:
+
 
 +
 
 +
===Usando un ''Timer''===
 
  Public Sub Form_Open()
 
  Public Sub Form_Open()
 
   
 
   
   Me.Tracking = True
+
   Timer1.Delay = 20
  TextArea1.Tracking = True
 
 
   
 
   
  Object.Attach(Me, Me, "Controllo")
+
End
  Object.Attach(TextArea1, Me, "Controllo")
 
 
   
 
   
End
 
 
   
 
   
 +
Public Sub Timer1_Timer()
 
   
 
   
Public Sub Controllo_MouseMove()
 
 
 
 
   Me.Title = "X = " & CStr(Mouse.ScreenX - Me.X) &
 
   Me.Title = "X = " & CStr(Mouse.ScreenX - Me.X) &
 
         "      Y = " & CStr(Mouse.ScreenY - Me.Y)
 
         "      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()
 +
 +
<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
 
  End
 
  
  

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: