DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Bir buton vs... ekleyip ona tıklayıp framenin konumlarını bulup o konum değerlerine göre taşıyın.Denemedim sma olur zannediyorum.Yada buton vs.. eklemeden framenin loyout gibi event vardı orayada yazılabilinir.Merhaba. Ben Userform üzerinde Frame2 içerisinde olmayan herhangi bir nesneyi Frame2 içine almak istiyorum. Bunu o nesneyi silmeden Frame2 içine taşıyabilir miyim? Mümkünse yazabilir misiniz? Teşekkürler.
Rica ederim.Zaten mevcut olanı dediğim yöntemle taşıyabilirsiniz.Denemek için zaman bulunca bir bakarım galiba biraz gelişmiş yöntemlerle fareye basılı tutupa taşınabiliniyor.Cevap için teşekkür ederim. Fakat yeni bir nesne olarak değil de mevcut olanı taşımak istiyordum. Bu yapılabilseydi farklı bir çalışma yapmayı düşünüyordum.
Private Sub UserForm_Layout()
With Me.CommandButton1
.Left = Me.Frame1.Left + 5
.Top = Me.Frame1.Top + 5
End With
MakeTransparentFrame Frame1, &H1, RGB(240, 240, 240)
End Sub
#If VBA7 Then
Private Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare PtrSafe Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Declare PtrSafe Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare PtrSafe Function GetFocus Lib "user32" () As Long
#Else
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function GetFocus Lib "user32" () As Long
#End If
Private Const GWL_EXSTYLE As Long = (-20)
Private Const GWL_STYLE As Long = (-16)
Private Const WS_EX_LAYERED = &H80000
Function MakeTransparentFrame(frm As Object, colorKey As Variant, Optional color As Variant, Optional hnd As Long)
LWA_COLORKEY = colorKey
Dim formhandle As Long
Dim bytOpacity As Byte
formhandle = Extraithandle(frm)
If IsMissing(color) Then color = &H8000& '//rgbWhite
bytOpacity = 200
SetWindowLong formhandle, GWL_EXSTYLE, GetWindowLong(formhandle, GWL_EXSTYLE) Or WS_EX_LAYERED
frm.BackColor = color
SetLayeredWindowAttributes formhandle, color, bytOpacity, LWA_COLORKEY
frm.ZOrder 1
End Function
Function Extraithandle(ctrl As Control) As Long
ctrl.SetFocus
Extraithandle = GetFocus
End Function
Dim isDragging As Boolean
Dim offsetX As Single
Dim offsetY As Single
Private Sub CommandButton1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
isDragging = True
offsetX = X
offsetY = Y
End Sub
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If isDragging Then
CommandButton1.Left = CommandButton1.Left + (X - offsetX)
CommandButton1.Top = CommandButton1.Top + (Y - offsetY)
End If
End Sub
Private Sub CommandButton1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
isDragging = False
' Komut butonu çerçeve (Frame) içine taşınmışsa işlemi kontrol edin
If CommandButton1.Left >= Frame1.Left And CommandButton1.Top >= Frame1.Top And _
CommandButton1.Left + CommandButton1.Width <= Frame1.Left + Frame1.Width And _
CommandButton1.Top + CommandButton1.Height <= Frame1.Top + Frame1.Height Then
MsgBox "Buton çerçeve içine taşındı!"
End If
End Sub
Private Sub UserForm_Activate()
MakeTransparentFrame Frame1, &H1, RGB(240, 240, 240)
End Sub
Rica ederim.Daha fazlasını bilmiyorum araştırmak gerekiyor.Dediğiniz gibi güzel çalışıyor. Emeğinize sağlık. Fakat nesne her ne kadar Frame1 içine görünse de bu nesneyi Frame1 içine dahil etmiyor sanırım. Ben Frame1 içerisinde bunu bir control nesnesi olarak görebilseydim çok güzel olacaktı. Fakat sanırım böyle bir özellik olmayabilir.
Tam olarak bunu neden istediğinizi ve ne yapmak istediğinizi söylerseniz belki farklı bir yöntem bulunabilir.Dediğiniz gibi güzel çalışıyor. Emeğinize sağlık. Fakat nesne her ne kadar Frame1 içine görünse de bu nesneyi Frame1 içine dahil etmiyor sanırım. Ben Frame1 içerisinde bunu bir control nesnesi olarak görebilseydim çok güzel olacaktı. Fakat sanırım böyle bir özellik olmayabilir.
Frame1.Controls.Add CommandButton1
Cevap için teşekkürler. Acaba bu yazdığınız kodları yukarıda nereye yazmamız gerekiyor.Fare bırakıldığında,
ile koleksiyona ekleyin.C#:Frame1.Controls.Add CommandButton1