Newsgroup: it.comp.lang.visual-basic
Titolo: Ocx per collegamenti hypertext

Ragazi cerco disperatamente l'ocx per creare i collegamenti a siti o caselle
e-mail! rispondete qui o via e-mail
drkr...@sofhome.net
grazie

 e-mail! rispondete qui o via e-mail
"creare i collegamenti" in che senso ?

 wrote in message 86art3$r76$1...@nslave1.tin.it...


 wrote


grazie mille!! Adesso vorrei che quando passi sopra si sottolineasse e
cambiasse colore e fin li ci sono. perņ quando non ci passo sopra con il
mouse dovrebbe tornare normale ma in ivece...... questo č quello che ho
scritto
Private Sub Label3_MouseMove(Button As Integer, Shift As Integer, X As
Single, Y As Single)
Label3.FontUnderline = True
Label3.FontSize = (17)
come faccio a farlo tornare nello stato normale???

 come faccio a farlo tornare nello stato normale???
non so se ci sono metodi + efficienti.
dato che non mi sembra ci sia un lbl_lostfocus (o si' ?), io in un caso
simile ho messo nel form_mousemove (mi sembra ci sia) -- cioe' quando il
mouse esce dalla lbl e torna sul form, o sul frame, vedi tu -- qc che nel
tuo caso potrebbe essere:
Label3.FontUnderline = false ' = stato normale
Label3.FontSize = ... ' = stato normale
chiaro che se hai un pacchetto di lbl collegate a indirizzi ti conviene fare
una sub a parte, da richiamare al form_mousemove e tutte le volte che devi
resettare le lbl.
hth, pal

 
drkr...@sofhome.net
Non occorre un OCX...
E sufficiente usare una label, da colorare di BLU e Attivare la
sottolineatura...
Attivi la gestione del click sulla label e ci metti questa procedura:
Private Sub Label1_Click()
    RetValue = ShellExecute(Me.hwnd, vbNullString,
"mailto:
em...@provider.it
", vbNullString, "c:\", SW_SHOWNORMAL)
''' [occhio questo di sopra va tutto in una riga]
End Sub
Nelle dichiarazioni devi copiare questo codice:
Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal
lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String,
ByVal nShowCmd As Long) As Long
''' [occhio questo di sopra va tutto in una riga]
Const SW_SHOWNORMAL = 1
NOTA:
Al posto di:
        mailto:
em...@provider.it
puoi mettere anche
 
http://www.nomesito.it
--
Ciao!
----------------------------------
Nel mio sito (sezione "I Miei Programmi") trovate il
programma FREEWARE AutoQuote! che permette di quotare
i messaggi che non quota Outlook Express.
==================================
Daniele Pinna  Email: 
dap...@lycosmail.com
Nell'indirizzo Email eliminare la parola "OOPS."
Sito Web: Il DoCFa in Pillole: 
http://dapinna.freeweb.org
ICQ UIN: 24567484

...

In questo modo pero' se l'utente sposta velocemente il mouse fuori dalla
form, puo' capitare che non ci siano eventi mousemove della form.
Un metodo + ricercato sarebbe quello di controllare (in un timer) che form
sta sotto al mouse, o la sua posizione. In qualsiasi caso, anche se la cosa
puo' sembrare banale, per risolverla al 100% occorre sbattersi oltremodo,
quindi... il semplice mousemove va + che bene  :-PPP  :-))
Ciao
By -MES-   Maronese Ettore
http://www.maronese.com/mes
(con OCX per stampare i recordset)
Sito Comune di programmatori Visual Basic
http://www.murialdo.it/it_lang_vb

quindi... il semplice mousemove va + che bene  :-PPP  :-))
mi sorge una domanda...
ma questi eventi timer, magari fatti su tempi brevi, non appesantiscono il
sistema... tipo che succhiano risorse?
P.

...

Si, succhiano risorse, come tutto.
Oltretutto i temer allocabili dal sistema sono contati (da un mio
esperimento tanto tempo fa, emergeva un limite di 25 circa) e mamma M$ si
raccomanda di usarli poco, uno per applicazione.
Comunque c'e' da dire che l'evento di timer e' quello piu' stupido, nel
senso che il sistema lo scatena quando proprio non ha niente da fare.
Infatti sono molto imprecisi, e questo fa si che il sistema si appesantisce
poco. (poi dipende da cosa gli si fa fare al timer)
L'unico evento con meno priorita' del timer e' il Paint.


 sta sotto al mouse, o la sua posizione.
Sě, sě, il copia e incolla č proprio bello ;-)))
Roal Zanazzi aveva postato questo codice esattamente un anno fa (24/01/99):
_____________________________
L'uso di un timer e' una soluzione per nulla elegante (oltre che essere dispendiosa per l'uso di risorse).
Soluzione 1: (codice copiato direttamente da un mio OCX che fa i pulsanti flat ;-)
usi l'evento MouseMove e le API GetCapture, SetCapture e ReleaseCapture.
Private Sub UserControl_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    If (GetCapture <> UserControl.hwnd) Then
        SetCapture UserControl.hwnd  ' catturo il mouse
        RaiseEvent MouseEnter
    Else
        If ((x < 0 Or x > UserControl.Width) Or (y < 0 Or y > UserControl.Height)) Then
            ' se mi trovo al di fuori del controllo
            ReleaseCapture
            RaiseEvent MouseLeave
        Else
            RaiseEvent MouseMove(Button, Shift, x, y)
        End If
    End If
End Sub
Soluzione 2: (non l'ho mai provata)
subclassing del controllo e gestione del messaggio WM_NCMOUSEMOVE.
_____________________________
Bye, G.
--
---------------------------------------------
    Le risposte alle tue domande le trovi
    sul Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
       ... e nell'help in linea !
---------------------------------------------
Real E-address: 
gaet...@hotmail.com

 usi l'evento MouseMove e le API GetCapture, SetCapture e ReleaseCapture.
Bello! Grazie a te e bravo a Roal.
Però qui scattano le domande:
Cosa succede se l'utente chiude l'applicazione mentre è attivo il SetCapture
(magari con Alt-F4)?
Se metti due OCX che usano questo sistema uno accanto all'altro, quando ti
sposti col mouse sul secondo, all'atto del ReleaseCapture del primo, scatta
subito il MouseMove del secondo o devi spostare di nuovo il mouse?
Ciao
*Roby*