Newsgroup: it.comp.lang.visual-basic
Titolo: Aggiunta di controlli a runtime ed eventi del mouse

ciao a tutti, come da oggetto ho 2 problemi.
1) come posso aggiungere a runtime un nuovo controllo?
sto creando un controllo che simuli un pannello di comando (simile a quello di
access). potrei creare un tot di pulsanti o label invisibili, però se dovessi
aver bisogno di un numero maggiore di quel tot? l'idea sarebbe quella di arire
una tabella, leggere quanti comandi servono ed aggiungerli alla maschera. il
problema è che non so in che modo farlo a runtime.
2) come posso creare un evento che si attivi quando il mouse passa sopra un
controllo ed un altro che si attivi quando il mouse si sposta da questo
controllo?
in pratica vorrei creare una specie di collegamento ipertestuale, che cambia
colore quando il mouse passa sopra e torna nero quando il mouse non è più sopra.
spero sia chiaro.
ciao e grazie.
accursio.

 spero sia chiaro.
insomma :)
ciao :)
--
-------
sito: 
www.dadev.it
ultime: Ocx per irc testi freeware
-------

"Antonio" <fa...@falsa.fls> ha scritto nel messaggio
news:lrEf7.6935$i9.3...@news.infostrada.it...

Per la label, puoi anche usare una picturebox e dentro una label di
dimensione leggermente più piccola, quindi gestire il mousemove sia sulla
label per attivare l'effetto e sia sulla picturebox per disabilitare
l'effetto.

 colore quando il mouse passa sopra e torna nero quando il mouse non č piů
sopra.
'-----------------------------------------------------------
'
' Esempio di come gestire gli eventi MouseEnter/MouseExit
'
' [FAQ] it.comp.lang.visual-basic
'
'-----------------------------------------------------------
' Autore: Fabio Zanetta (Zanna)
'-----------------------------------------------------------
'
' (1) Copiare il seguente codice in un form vuoto.
' (2) Aggiungere uno o piů controlli Command1 (un array)
' (3) Aggiungere un controllo Picture1
' (4) Aggiungere una ListBox List1
'
'-----------------------------------------------------------
Option Explicit
Private Declare Function GetCapture Lib "user32" () As Long
Private Declare Function SetCapture Lib "user32" (ByVal hwnd As Long) As
Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
Function MouseOver(Ctrl As Control, ByVal X As Single, ByVal Y As Single) As
Long
    ' Restituisce
    ' -1 : esce
    '  0 : dentro
    '  1 : entra
    If (GetCapture <> Ctrl.hwnd) Then
        Call SetCapture(Ctrl.hwnd)
        MouseOver = 1
    Else
        If ((X < 0 Or X > Ctrl.Width) Or (Y < 0 Or Y > Ctrl.Height)) Then
            Call ReleaseCapture
            MouseOver = -1
        Else
            MouseOver = 0
        End If
    End If
End Function
Private Sub Command1_MouseMove(Index As Integer, Button As Integer, Shift As
Integer, X As Single, Y As Single)
    Select Case (MouseOver(Command1(Index), X, Y))
    Case -1
        List1.AddItem "Uscito da Command1(" & Index & ")", 0
    Case 1
        List1.AddItem "Entrato in Command1(" & Index & ")", 0
    Case Else
        List1.AddItem "Dentro Command1(" & Index & ")", 0
    End Select
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As
Single, Y As Single)
    Select Case (MouseOver(Picture1, X, Y))
    Case -1
        List1.AddItem "Uscito da Picture1", 0
    Case 1
        List1.AddItem "Entrato in Picture1", 0
    Case Else
        List1.AddItem "Dentro Picture1", 0
    End Select
End Sub

| Per la label, puoi anche usare una picturebox e dentro una label di
| dimensione leggermente più piccola, quindi gestire il mousemove sia sulla
| label per attivare l'effetto e sia sulla picturebox per disabilitare
| l'effetto.
purtroppo se ci si muove un po' velocemente non sempre la picture box rileva
l'evento.
counque grazie.
ciao.
accursio.

| a designe time setti la proprietà index = 0  ,in pratica crei un array di
| controlli, poi a runtime   load  controllo(numero)
provo, grazie
| c'è l'evento mousemove che viene chiamato ogni volta che ti muovi nel
| controllo (ma attento anche solo per un pixel) perciò devi controllare lo
| spostamento magari tramite un timer ..
ci avevo pensato, ma speravo ci fosse qualcosa di meno 'artigianale'.
grazie mille.
accursio.

eccezionale!
grazie mille.
accursio.