super rambo (Normal User)
Pro
Messaggi: 135
Iscritto: 04/06/2008
|
salve, ho una listbox e mi servirebbe che quando il mouse è al di fuori della list la proprietà visible della list va a false. so che devo usare l sub mouse_move ma non so come.. come posso fare?? grazie
|
|
GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
usa mouse_move della form
cioè quando il mouse si muove nella form allora rendi invisibile la lista
|
|
ruggy94 (Member)
Guru
Messaggi: 890
Iscritto: 21/04/2008
|
Con Form_MouseMove identifica le coordinate del mouse e se identificano un punto al di fuori della list imposta la proprieta' visible di quest'ultima a false
|
|
super rambo (Normal User)
Pro
Messaggi: 135
Iscritto: 04/06/2008
|
grazie dell'auito ma c'è un piccolo problema il form è coperto pienamente di oggetti e quindi la proprietà mouse_move del form non può andare. ho fatto così:
Codice sorgente - presumibilmente VB.NET |
Dim cordx As Single 'Dichiaro le variabili da usare (X) Dim cordy As Single 'Dichiaro le variabili da usare (Y) Private Sub List1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) cordx = X cordy = Y Text1 = X Text2 = Y End Sub
|
il codice funziona, quando muovo il mouse nella list i numeri nelle text cambiano però appena vado fuori si fermano. mi era venuto in mente di fare un timer che controllasse che se nelle text c'erano i numeri di quando esco dala list metteva la proprietà visible su false, ma i numeri delle text cambiano in base a dove esco dalla list (sopra, sotto ecc...) come potrei fare?? grazie!!
|
|
ruggy94 (Member)
Guru
Messaggi: 890
Iscritto: 21/04/2008
|
Postato originariamente da super rambo:
grazie dell'auito ma c'è un piccolo problema il form è coperto pienamente di oggetti e quindi la proprietà mouse_move del form non può andare. ho fatto così:
Codice sorgente - presumibilmente VB.NET |
Dim cordx As Single 'Dichiaro le variabili da usare (X) Dim cordy As Single 'Dichiaro le variabili da usare (Y) Private Sub List1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) cordx = X cordy = Y Text1 = X Text2 = Y End Sub
|
il codice funziona, quando muovo il mouse nella list i numeri nelle text cambiano però appena vado fuori si fermano. mi era venuto in mente di fare un timer che controllasse che se nelle text c'erano i numeri di quando esco dala list metteva la proprietà visible su false, ma i numeri delle text cambiano in base a dove esco dalla list (sopra, sotto ecc...) come potrei fare?? grazie!! |
allora: intanto i numeri all'interno delle textbox non "cambiano" quando esci dalla listbox perchè la parte del codice che fa aggiornare le textbox l'hai messa all'interno di list1_mousemove.
Poi non capisco cosa intendi dire con questo
Postato originariamente da super rambo:
grazie dell'auito ma c'è un piccolo problema il form è coperto pienamente di oggetti e quindi la proprietà mouse_move del form non può andare. |
Voglio dire...non capisco perchè "non può andare".
Infine i numeri cambiano se esci dalla list sopra o sotto perchè list1_mousemove aggiorna le coordinate finchè tu rimani all'interno della list1 e quindi viene scrito sulle textbox le coordinate del tuo mouse nell'ultimo istante in cui sei rimasto dentro la list1.
Ora faccio delle prove di codice e riposto.
PS: se non hai capito qualcosa fammelo sapere |
|
super rambo (Normal User)
Pro
Messaggi: 135
Iscritto: 04/06/2008
|
per la list mi sono spiegato male ed è come dici tu, ma se io metto il codice in form_mousemove non funziona perchè nel form c'è un webbrowser che occupa tutta la pagina e l'evento mouse_move nel webbrowser non c'è quindi come faccio???
|
|
ruggy94 (Member)
Guru
Messaggi: 890
Iscritto: 21/04/2008
|
Esiste un'API in grado di aiutarti.
Dichiarazioni:
Codice sorgente - presumibilmente VB.NET |
Private Type POINTAPI x As Long y As Long End Type Private Declare Function GetCursorPos Lib "user32" _ (lpPoint As POINTAPI) As Long Private Declare Function ScreenToClient Lib "user32" _ (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
|
In un timer per ottenere le coordinate del mouse rispetto al form:
Codice sorgente - presumibilmente VB.NET |
Dim pt As POINTAPI Call GetCursorPos(pt) Call ScreenToClient(Me.hwnd, pt) Debug. Print "Screen Coords: ", pt. x, pt. y
|
Adesso ti basta aggiungere un If al timer in modo che identifichi quando il mouse esce dalla list1 Ultima modifica effettuata da ruggy94 il 11/09/2008 alle 19:41 |
|
super rambo (Normal User)
Pro
Messaggi: 135
Iscritto: 04/06/2008
|
ho preso un punto al di fuori della list e ho fatto l'if.. funziona ma l'utente dovrebbe passare proprio in quel punto per mettere la proprietà visible a fale... tu intendevi questo o ho sbagliato io?? Grazie!!
|
|
antometal (Member)
Guru
Messaggi: 691
Iscritto: 12/09/2007
|
Postato originariamente da super rambo:
salve, ho una listbox e mi servirebbe che quando il mouse è al di fuori della list la proprietà visible della list va a false. so che devo usare l sub mouse_move ma non so come.. come posso fare?? grazie |
segui il consiglio di ruggy94, anche perchè non puoi usare l' evento mousemove della listbox per farla riapparire
trovate le coordinate del mouse, ti assicuri che siano comprese nelle dimensioni della listbox
è sufficiente una if else endif con 4 condizioni |
|