Newsgroup: it.comp.lang.visual-basic
Titolo: [VB6] Label Link

Devo visualizzare dei link su una finestra.
In rete ho trovato questo codice che funziona bene.
Private Sub lblLink_DragDrop(Index As Integer, source As Control, X As 
Single, Y As Single)
    If source = lblLink(Index) Then
        Select Case Index
        End Select
    End If
End Sub
Private Sub lblLink_DragOver(Index As Integer, source As Control, X As 
Single, Y As Single, State As Integer)
    If State = vbLeave Then
        With lblLink(Index)
            .FontUnderline = False
            .Drag vbEndDrag
        End With
    End If
End Sub
Private Sub lblLink_MouseMove(Index As Integer, Button As Integer, Shift As 
Integer, X As Single, Y As Single)
    With lblLink(Index)
        .FontUnderline = True
        .Drag vbBeginDrag
    End With
End Sub
Sarebbe perfetto, perchè mi serve la trasparenza della label.
Unico problema è che:
Funziona sia con il tasto destro del mouse che con il sinistro.
E non posso neanche intercettare gli eventi MouseDown, MouseUp e Click, 
perchè i drag li disabilitano.
Qualche soluzione?
Grazie Carmelo 

 End Sub
Andando a naso...

"Franz_aRTiglio" <fran...@N0SPAMtin.it> ha scritto nel messaggio 
news:47d51...@news.bluewin.ch...

Il comando lo da l'evento lblLink_DragDrop e anche inserendo una var globale 
ButtonMouse non posso impostare il valore, perchè come ho già detto gli 
eventi MouseDown e MouseUp non rispondono
Ciao Carmelo 


Non credo di avere capito.
Hai delle label in un form e ci metti dentro dei link.
Vorresti che al passaggio del mouse diventassero blu e sottolineate?
E sentissero il click?
Questa è la gestione del click sulla label;
la shellexecute te la trovi in qualsiasi guida sulle
api; se vuoi usa il modo che ti pare per lanciare
il link:
----------------
Private Sub Label1_Click(Index As Integer)
    ShellExecute Me.hWnd, _
                 vbNullString, _
                 Label1(Index).Caption, _
                 vbNullString, _
                 "", _
                 1
End Sub
Questa la gestione della sottolineatura:
----------------
Private Sub Label1_MouseMove(Index As Integer, _
            Button As Integer, _
            Shift As Integer, _
            X As Single, Y As Single)
    resettaLABEL1 Index
End Sub
Questo è da inserire nei controlli della form
per eliminare la sottolineatura se il mouse
non è su una label. L'alternativa è usare un timer:
----------------
Private Sub Form_MouseMove(Button As Integer, _
            Shift As Integer, _
            X As Single, Y As Single)
    resettaLABEL1
End Sub
Questa è la funzione che resetta la sottolineatura
delle label:
----------------
Sub resettaLABEL1(Optional lblPUNT As Integer = -1)
    'numeroDiLABEL1 è il numero di label
    '   presenti nel form
    Dim l As Integer
    For l = 0 To numeroDiLABEL1
        If l = lblPUNT Then
            If Label1(l).Font.Underline <> True Then _
                Label1(l).Font.Underline = True
        Else
            If Label1(l).Font.Underline <> False Then _
                Label1(l).Font.Underline = False
        End If
    Next
End Sub
L'ho scritto a memoria quindi potrebbe essereci qualche OrrOre di 
stUmpa...
-- 
-> GbC|
www.gbcweb.com
www.chiappori.com
 

Forse non mi sono spiegato bene.
Quello che cerco, non è un nuovo codice, perchè quello che ho postato mi va 
bene.
Il punto è che usando il DragDrop, non posso intercettare gli eventi 
MouseDown, MouseUp, non so perchè li disabilita e di conseguenza non posso 
stabilire quale Button del mouse ho premuto.
Volevo sapere se c'è un modo, usando il codice sopra, di intercettare il 
Button del mouse.
Ciao Carmelo


C'è l'API GetAsyncKeyState.
Private Declare Function GetAsyncKeyState Lib "user32.dll" ( _
     ByVal vKey As Long) As Integer
Private Const VK_LBUTTON As Long = &H1
Nell'evento DragDrop:
    Dim State As Integer
    State = GetAsyncKeyState(VK_LBUTTON)
    If (State And 1) <> 0 Then
        ' ShellExecute etc etc..
    End If
Bye
Raf 

 Raf
L'avevo provato ma non funziona. Sia se preme il tasto destro, sia col 
sinistro mi restituisce sempre 1
Carmelo 


È vero. Ma la cosa grave è che abbiamo la memoria corta entrambi... ;-D
Poco meno di un anno fa avevi fatto la stessa identica domanda e io ti avevo 
risposto (
http://tinyurl.com/2ezfrb
) rimandandoti a questo link:
http://vbnet.mvps.org/index.html?code/intrinsic/sehyperlink.htm
Fossi in te mi rassegnerei ad abbandonare il trucchetto del dragdrop per 
simulare l'hyperlink...
Ciao
Raf 


Allora quello che ho postato magari viene ancora comodo...


 Ciao
Il fatto è che con questo "truccheto" non ho bisogno di mettere codice nel 
contenitore delle label e poi anche se le label sono vicine perdono lo stato 
precedente, mentre con l'evento MouseMove del contenitore questo non 
succede.
Quello che mi fa inca..re è che leggendo la guida sul dragdrop, dice che se 
lo imposto a manuale non perdo gli eventi MouseDown e MouseUp.
Ciao Carmelo 

 che se lo imposto a manuale non perdo gli eventi MouseDown e MouseUp.
No, quello che c'è scritto nella guida è che se è impostato au Automatic, 
allora il controllo non risponde agli eventi del mouse come fa normalmente.
"Remarks
When DragMode is set to 1 (Automatic), the control doesn't respond as usual 
to mouse events. Use the 0 (Manual) setting to determine when a 
drag-and-drop operation begins or ends; you can use this setting to initiate 
a drag-and-drop operation in response to a keyboard or menu command or to 
enable a source control to recognize a MouseDown event prior to a 
drag-and-drop operation."
È chiaro che una volta avviato il drag&drop chiamando il metodo Drag 
nell'evento MouseMove, allora si perde il normale funzionamento degli altri 
eventi, ma è normale.
Bye
Raf 

 usercontrol.
E la trasparenza?
Ciao Carmelo 


È sufficiente che sia l'UserControl che la label in esso contenuta abbiano 
backstyle=transparent.
Bye
Raf

"Rafunk" <rafun...@NOTHANKSlibero.it> ha scritto nel messaggio 
news:frdtjd$3d2$1...@alix.livenet.it...

Ho provato ma con entrambi trasparenti la label non si vede
Ciao Carmelo 


Dimenticavo: devi settare Windowless=True.
Ciao