Ciao a tutti
Non riesco a capire se è possibile rilevare se il mouse
preme il cursone di un TrackBar.
Grazie
Ciao a tutti
Non riesco a capire se è possibile rilevare se il mouse
preme il cursone di un TrackBar.
Grazie
Comunque Grazie
Di che linguaggio stiamo parlando?![]()
Amaro C++, il gusto pieno dell'undefined behavior.
Solo se fai click o se cambi valore?
C'è l'evento scroll e il valuechanged ma devi essere più preciso se vuoi risposte precise.
No MP tecnici (non rispondo nemmeno!), usa il forum.
Scusate provvedo immediatamente a correggere gli errori.
Il linguaggio è VB.net
Ho usato
TrackBar2.Cursor.Handle
per capire se muovo il TrackBar
ma non sono sicuro che sia corretto.
Comunque Grazie
Continuo a non capire cosa intendi.
No MP tecnici (non rispondo nemmeno!), usa il forum.
Questo è segno che sono molto indietro.
Cmq.... cerco di semplificare.
Volevo che il mio script indentificasse quando con il mouse clicco sul
cursone del TrackBar, anche senza spostarlo.
Es:
If
TrackBar2.Cursor.Handle = true
TextBox1.Text = "cliccato"
tutto qui
Scuste x il l'impreparazione
Comunque Grazie
Aggiungo il tag [VB.NET] al titolo, in futuro ricordatene.Originariamente inviato da fosforo
Il linguaggio è VB.net![]()
Amaro C++, il gusto pieno dell'undefined behavior.
Ciao!Originariamente inviato da fosforo
Questo è segno che sono molto indietro.
Cmq.... cerco di semplificare.
Volevo che il mio script indentificasse quando con il mouse clicco sul
cursone del TrackBar, anche senza spostarlo.
Es:
If
TrackBar2.Cursor.Handle = true
TextBox1.Text = "cliccato"
tutto qui
Scuste x il l'impreparazione
partiamo dal presupposto che devi utilizzare gli eventi, e gli eventi non si usano come stai facendo tu... non so dove tu possa aver visto una cosa del genere...
detto questo, comunque anche se usi gli eventi del controllo non hai a disposizione ne un evento click sul cursore, ne un evento click sul controllo (tutto), quindi in sostanza lo dovresti calcolare tramite l'evento MouseClick del form che contiene il controllo. A questo punto, rilevando la posizione del mouse in relazione al form scopri se il mouse ha fatto click sulla TrackBar (calcolando le dimensioni e la posizione rispetto al form), se poi vuoi puoi calcolare direttamente se si trova sopra all'area del cursore (inteso come cursore della barra) calcolandone la posizione relativa al controllo, al valore ottenuto dal controllo (quindi immaginando che il valore sia 50 su 100 il cursore si troverà a metà) e la dimensione stessa del cursore, sia in altezza che in larghezza.
insomma devi farti un po di calcoli...![]()
buon lavoro!
EDIT :
in realtà non puoi usare il MouseClick del form perchè non verrebbe rilevato sul controllo...
Penso che stai facendo un po' di confusione...
A parte il fatto che non ha senso (almeno non ne vedo) rilevare il click sulla trackbar, se vuoi rilevare quando si cambia il valore c'è l'evento Scroll, altrimenti se proprio vuoi rilevare il click ci sono diverse strade...
1) Sfruttare l'evento MouseDown e/o MouseUp
2) Creare una classe ereditando l'oggetto TrackBar e fare l'overrides dell'evento OnMouseClick
In pratica la classe potrebbe essere una cosa del genere:
e fra gli eventi della classe, ti troverai anche l'evento MyMouseClick.codice:Public Class MyTrackBar Inherits TrackBar Public Event MyMouseClick(e As System.Windows.Forms.MouseEventArgs) Protected Overrides Sub OnMouseClick(e As System.Windows.Forms.MouseEventArgs) RaiseEvent MyMouseClick(e) MyBase.OnMouseClick(e) End Sub End Class 'nel form Dim WithEvents myTb As New MyTrackBar 'Sub per creare l'oggetto Private Sub creaTrack() 'qui dai la dimensione, la posizione ecc.. dell'oggetto myTb.Width = 300 myTb.Left = 200 myTb.Top = 100 myTb.Visible = True Me.Controls.Add(mytb) End Sub
3) Creare un oggetto ereditando da TrackBar seguendo..la logica della classe..
![]()
Jupynet
Già, anche solo l'evento mouseUp potrebbe fare al caso tuo, solo che devi calcolare la percentuale di avanzamento del cursore (in base al valore attuale su valore massimo della barra) riportare la stessa percentuale sulla larghezza totale del controllo (sottraendo circa 10 pixel per lato che sono la distanza del punto minimo/massimo dal bordo del controllo) e sulla base del risultato calcolare se il puntatore del mouse si trova entro la larghezza del cursore, mentre per l'altezza calcoli sempre un range tra i 3 px circa e i 10 -15. Tutto questo se il controllo è disposto in orizontale, diversamente inverti i calcoli (Y-X)
![]()