Differenze tra le versioni di "Far apparire un Balloon, quando si passa con il mouse su un menu"
Riga 49: | Riga 49: | ||
'''End''' | '''End''' | ||
− | + | ||
+ | ===Usando un ciclo infinito=== | ||
+ | Al posto del ''Timer'' si potrà usare un Ciclo infinito e - come sopra - la Classe ''Rect'': | ||
'''Public''' Sub Form_Open() | '''Public''' Sub Form_Open() | ||
Versione delle 11:07, 7 gen 2022
Il caso in questione è quello in cui si vuole far apparire un Balloon sulla voce principale di un Menu, passandoci sopra con il puntatore del mouse.
Usando la Proprietà ".Tracking" del Form
La Proprietà ".Tracking" imposta se il Controllo (nel nostro caso il Form) riceverà eventi "_MouseMove()" senza il bisogno di tenere premuto un tasto del mouse, mentre ci si sposta con esso.
Mostriamo un esempio pratico, nel quale si è creato un Menu sul Form:
Public Sub Form_Open() Me.Tracking = True End Public Sub Form_MouseMove() Select Case Mouse.X Case 15 To 50 If Mouse.Y < 20 Then Balloon.Info("Il mouse sta passando sul Menu !", Me, Mouse.X, Mouse.Y) Else Balloon.Hide Endif End Select End
Usando un Oggetto Timer
Si potrà utilizzare un Timer e la Classe Rect, per verificare la distanza del puntatore del mouse dall'angolo alto a sinistra dello schermo in rapporto con la distanza del Form, ove sono presenti le voci principali del Menu, dall'angolo alto a sinistra dello schermo.
Mostriamo un esempio pratico:
Private tm As Timer Public Sub Form_Open() With tm = New Timer As "Tempus" .Delay = 50 .Start End With End Public Sub Tempus_Timer() Dim rt As New Rect(Me.ScreenX + 10, Me.ScreenY + 10, Me.Font.TextWidth(Menu1.Caption), Me.Font.TextHeight(Menu1.Caption)) If rt.Contains(Mouse.ScreenX, Mouse.ScreenY) Then Balloon.Info("Un testo qualsiasi.", Me, 10 + (Me.Font.TextWidth(Menu1.Caption) / 2), 5) Endif End
Usando un ciclo infinito
Al posto del Timer si potrà usare un Ciclo infinito e - come sopra - la Classe Rect:
Public Sub Form_Open() Me.Show Do Dim rt As New Rect(Me.ScreenX + 10, Me.ScreenY + 10, Me.Font.TextWidth(Menu1.Text), Me.Font.TextHeight(Menu1.Text)) If rt.Contains(Mouse.ScreenX, Mouse.ScreenY) Then Balloon.Info("Un testo qualsiasi.", Me, 10 + (Me.Font.TextWidth(Menu1.Caption) / 2), 5) Else Balloon.Hide Endif ' L'istruzione "Wait" consente di risparmiare risorse di sistema e di agire su eventuali Oggetti grafici posti sul "Form": Wait 0.01 Loop End