Newsgroup: it.comp.lang.visual-basic
Titolo: Tocco di classe per il mio programmino.. :)

Ciao!
Grazie a tutto il newsgroup e, in modo particolare, a coloro che mi
hanno aiutato.
Ora terminare definitivamente il mio programmino mi manca un tocco di
classe che non riesco ad applicare: COME DIAVOLACCIO SI FA a fare in
modo che quando il puntatore passa sopra a un'immagine, questa
scompaia e al suo posto ne vanga fuori un'altra, e viceversa quando il
puntatore esce dall'immagine?
Mi hanno consigliato di provare con un timer, con l'evento mousedown o
mouseup...... ma non sono riuscito a combinare niente. Vi prego,
aiutatemi e poi spedirņ gratuitamente il programma a chiunque me lo
chieda! :) Sempre che non sia considerata una punizione! :D
(Per chi fosse veramente interessato al mio programma (!!!) premetto
che si tratta di un'interfaccia per cd (avete presente
quell'interfaccia che si apre quando inserite un cd che trovate
insieme alle riviste? ecco, una cosa simile...) completamente
personalizzabile (tranne che per qualche aspetto... Ad esempio il mio
nome rimane per forza! :) Con tutta la fatica che ho fatto voglio
avere almeno i meriti! :))   )  
ByeZ!*
Alkondor

 mouseup...... ma non sono riuscito a combinare niente.
L'evento da utilizzare è MouseMove
Per cambiare immagine (in una casella immagine) in fase di esecuzione devi
usare la funzione LoadPicture
Es.  picFoto.Picture = LoadPicture("Nome.BMP")
Naturalmente puoi anche specificare il percorso dell'immagine

Ok, grazie, ho fatto come dici e funziona, ma quando il mouse esce
dall'area dell'immagine, rimane l'immagine che ho appena
cambiato......
Come devo fare?
Grazie.
ByeZ!
Alkondor


>Naturalmente puoi anche specificare il percorso dell'immagine
Per ogni PicBox che vuoi modificare al passaggio del mouse
devi modificare un flag Booleano (puoi usare la proprietą Tag)
picFoto.Tag="Cambiata"
picFoto.Picture = LoadPicture("Nome.BMP")
Nel Form_MouseMove fai:
If picFoto.Tag="Cambiata" then
    picFoto.Tag="Originale"
    ' Rimetti l'immagine originale
    picFoto.Picture = LoadPicture("Originale.BMP")
End If
Spero che si capisca, scusa ma vado moooolto di fretta
Bye, G.
--
---------------------------------------------
    Le risposte alle tue domande le trovi sul
    Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
---------------------------------------------
Real E-address: 
gaet...@hotmail.com


Secondo me non funziona :)

 wrote in message
7kglg0$r3f$1...@fe2.cs.interbusiness.it...

Potrebbe funzionare, ma manca un pezzo (e Alkondor se ne e' gia' accorto ;-)
E comunque non e' la soluzione migliore. Vediamo come va a finire...
--
Roal Zanazzi
z...@iol.it

Tutto qui
Ci pensavo anch'io, ma:
1)	Ad ogni mouseMove è un po' pesantino....
2)	Se ti sposti velocemente col mouse, ed esci dalla form, non ti genera l'evento MouseMove nella form..... provare
per credere....
Ciao,
Moreno
#sirri#@
tin.it
(togliete "#" dall'indirizzo)
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
---------------------------------------------------------------------------

Raga, ho gia risolto, grazie 1000
In pratica ho detto che quando il mouse va sul bottone, si illumina
(cioè carica un'altra immagine) e quando il mouse va sul form, torna
come prima (cioè ricarica l'immagine iniziale)
E funziona bene......
Grazie



Per questo basta una variabile che metti a true la prima volta che entri
nell'oggetto e a false quando esci. Se quando muovi il mouse la variabile è
true non la fai ridisegnare perché significa che già c'eri.. etc etc

 wrote in message
7kislu$c63$1...@fe2.cs.interbusiness.it...

Direi che anche cosi' non ci siamo (o meglio, funziona, ma c'e' un sistema
migliore, e se cercate tra i vecchi messaggi, vedrete che l'ho postato
almeno 2 volte! Hi, hi... oggi sono cativo (con una t)!   >:-P
--
Roal Zanazzi
z...@iol.it

quant'altro).
'Description: Adding OnMouseIn, OnMouseOut events to controls.
'SetCapture(hWnd) questa funzione cattura i messaggi del mouse e li invia al
'controllo il cui handle è hWnd,
'GetCapture(hWnd) restituisce l'handle del controllo che aveva in precedenza
'il focus
'ReleaseCapure() rilascia il mouse
'Nell'evento mousemove svolgi le seguenti operazioni:
    if GetCapture(controllo.hWnd) <> controllo.hWnd then    ' EventoMouseIn
        SetCapture(controllo.hWnd)    ' catturo il mouse
    else
        if (x<0 or x> controllo.width) or (y<0 or y>controllo.Height) then
' se mi trovo al di fuori del controllo
            EventoMouseOut
            ReleaseCapture
        else
            evento MouseMove
        end if
    end if
Naturalmente le declare delle tre funzioni API usate le trovi nel
Visualizzatore API di VB.
--
Roal Zanazzi
z...@iol.it
--------------------------------------------
Tiè! :-))



Devi fare con evento MouseMove ...
Hai due controlli di image : allora quando si fa l'evento - nascondi
uno e mostri l'altro
Leggi l'help su Mouse Move e vedrai...
--
I'm happy VBing
Sent via Deja.com 
http://www.deja.com/
Share what you know. Learn what you don't.

 E comunque non e' la soluzione migliore. Vediamo come va a finire...
Boh... io ho trovata la funzione per vedere se il puntatore del mouse cade
dentro la picture, ma dove le devo mettere??
    Dim rettangolo As RECT
    Dim punto As POINTAPI
    GetWindowRect Picture1.hWnd, rettangolo
    GetCursorPos punto
    If PtInRegion(CreateRectRgnIndirect(rettangolo), punto.X, punto.Y) Then
        Picture1.BackColor = vbWhite
    Else
        Picture1.BackColor = vbRed
    End If


Io mi riferivo solo allo sfarfallio del mouse :))


Boh... scusa.. se metto il codice nell'evento mouse move della picturebox
come fa il codice a rilevare quando il mouse non si trova su di esso se il
codice non viene eseguito?

codice non viene eseguito?
mmm, io l'ho postato senza provarlo, ma in effetti il tuo ragionamento fila..... se ho un po' di tempo provo anch'io...
Roal? :-)


E' un metodo "barbaro" però O_O


     If PtInRegion(CreateRectRgnIndirect(rettangolo), punto.X, punto.Y)
Then
Bastava fare If PtInRect(....
senza scomodare le regions
Comunque, vedi il msg di Moreno Sirri, che riporta un mio vecchio msg con
una soluzione "un po' piu' elegante" :-)
--
Roal Zanazzi
z...@iol.it

 una soluzione "un po' piu' elegante" :-)
Non mi sembra che funzioni...
Ciao


Non hai capito.. volevo dire in quele evento metterlo per far eseguire il
codice


Misteri delle API ;-)
Se capite a cosa servono quelle API, capite come funziona il tutto. se non
lo capite da soli, ve lo spiego poi (scusate, ma ora non ho proprio tempo).
Provare per credere.
--
Roal Zanazzi
z...@iol.it


Hai provato? ;-)
--
Roal Zanazzi
z...@iol.it


No, questo periodo non mi di usare VB o altro :))
Ciao