ciao a tutti
vi invio 4 diversi esempi, tutti riguardanti lo stesso argomento;
a) nel primo esempio inseriamo ,nel form, 2 textbox e due controlli
ShockwaveFlash;
quando i text ricevono il focus, compare l'animazione:
Private Sub Text1_GotFocus()
Flash1.Visible = True
End Sub
Private Sub Text1_LostFocus()
Flash1.Visible = False
End Sub
Private Sub Text2_GotFocus()
Flash2.Visible = True
End Sub
Private Sub Text2_LostFocus()
Flash2.Visible = False
End Sub
il problema è ke se inseriamo il flash nei textbox l'animazione non si vede.
inoltre l'anim. è in flash;
se inseriamo una gif animata,si ha lo stesso problema e si deve usare un controllo specifico, tipo ocx
perciò come si può inserire una gif senza ocx, e visualizzarla nel textbox?
dal momento ke si ripetono le stesse linee di codice come si può evitare ad esempio cun un ciclo for next o for each?
b) nel secondo esempio, inseriamo un richtextbox ed un controllo flash;
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Sub Form_Load()
With RichTextBox1
.SelStart = Len(.Text)
Clipboard.Clear
Clipboard.SetData Image1.Picture
SendMessage .hWnd, &H302, 0, 0
Clipboard.Clear
End With
End Sub
in questo caso si vede il flash, ma rimane nella stessa posizione;
se digitiamo un testo, quest'ultimo scorre sotto il flash e non si vede.
come si può spostare l'animazione all'avanzare del testo o renderlo trasparente in modo che si veda il testo?
c) in questo esempio, abbiamo sul form una imagebox ed un timer;
Option Explicit
Dim x As Integer
Private Sub Timer1_Timer()
'i frames sono numerati da 0 a 3, per un totale di 4 frames
' la proprietà interval del timer è uguale a 20
Image1.Picture = LoadPicture("cartella dei frames\frame_0" & x & ".bmp")
x = x + 1
If x = 4 Then '4 è il numero dei frames
x = 0 'back to zero to loop
End If
End Sub
in questo caso l'animazione è in formato bmp, e viene divisa nei sui frames.
se proviamo a mettere i frames di una gif animata, si vede una gif statica, comunque si faccia variare la proprietà interval del timer.
come posso ovviare a questi problemi?
d) infine in questo ultimo esempio, sul form abbiamo una picturebox ed un richtextbox
Option Explicit
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const WM_PASTE = &H302
Private Sub Form_Load()
' Copia l'immagine nella clipboard.
Clipboard.Clear
Clipboard.SetData Picture1.Picture
' incolla l'immagine nel RichTextBox.
SendMessage RichTextBox1.hwnd, WM_PASTE, 0, 0
End Sub
i problemi in questo caso sono:
si tratta di una immagine statica e non una gif o flash;
l'immagine si trova sempre all'inizio del richtextbox;
er spostare il caret bisogna cliccare o sposarsi all'inizio del rich ad esempio con il tasto freccia;
digitando un testo l'immagine si sposta precedento il cursore.
come si può stabilire la posizione dell'immagine, ed inserire una animazione?
ad esempio si potrebbe inserire una emoticon amimata come avviene in questa chat ,cke segua il cursore?
scusate per la lunghezza di questo post, ma credio ke essendo l'argomento identico era inutile inviare 4 post diversi;
inoltre chi legge può avere le idee + chiare.
grazie per la vostra comprensione e spero di non aver violato il regolamento del forum
ciao a tutti
lemac
|