Ciao, sto facendo interagire VB6 con flash in modo da usare quest'ultimo come interfaccia dei miei software in vb.
Mi servirebbe però fare in modo di poterlo draggare.
Mi sono creato così un componente che mi permette di draggare il form, ma se setto la proprietà Backstyle a 0 me lo mette in trasparenza, ma non mi permette di draggarlo come se fosse posto visible=false.
Il codice che uso nel componente è questo:
codice:
Option Explicit
Dim moving As Boolean
Dim xold, yold, storedheight
Dim bottomdiag As Boolean, bottom As Boolean, right As Boolean
Event MouseDown()
Event MouseMove()
Event MouseUp()
Private Sub UserControl_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
RaiseEvent MouseDown
moving = True
If moving = True Then
yold = Y
xold = X
End If
End Sub
Private Sub UserControl_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If moving = True Then
Parent.Top = Parent.Top - (yold - Y)
Parent.Left = Parent.Left - (xold - X)
End If
End Sub
Private Sub UserControl_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
moving = False
End Sub
Private Sub UserControl_Paint()
UserControl.BackStyle = 0
End Sub
Avevo provato anche con una picturebox e questa funzione:
codice:
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Sub Form_Load()
Dim result As Long
picdrag.ZOrder
result = SetWindowLong(picdrag.hwnd, GWL_EXSTYLE, WS_EX_TRANSPARENT)
End Sub
e funzionava, ma se il form perdeva il focus o se lo draggavo oltre i limiti dello schermo, poi la picturebox riprendeva il suo colore iniziale. Questo è probabilmente dovuto ad un bug noto, ma non c'è proprio nessun modo per risolvere la questione?
p.s. Ho provato anche con le etichette, ma non vanno in primo piano rispetto al componente di flash