Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    752

    TrackBar Event

    Ciao a tutti

    Non riesco a capire se è possibile rilevare se il mouse
    preme il cursone di un TrackBar.

    Grazie
    Comunque Grazie

  2. #2

    Moderazione

    Di che linguaggio stiamo parlando?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    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.

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    752
    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

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Continuo a non capire cosa intendi.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    752
    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

  7. #7
    Originariamente inviato da fosforo
    Il linguaggio è VB.net
    Aggiungo il tag [VB.NET] al titolo, in futuro ricordatene.
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,539
    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
    Ciao!
    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...

  9. #9
    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:
    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
    e fra gli eventi della classe, ti troverai anche l'evento MyMouseClick.

    3) Creare un oggetto ereditando da TrackBar seguendo..la logica della classe..

    Jupynet

  10. #10
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,539
    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)


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.