UserForm üzerindeki (command1 gibi) mevcut nesneyi Frame1 içerisinden Frame2 ye taşımak mümkün mü?

Katılım
9 Eylül 2005
Mesajlar
24
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.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,165
Excel Vers. ve Dili
2019 Türkçe
Merhaba.

Gizleyip aynı özelliklerde yeni bir nesne oluşturulabilir.
 
Son düzenleme:
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
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.
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.
 
Katılım
9 Eylül 2005
Mesajlar
24
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.
 
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
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.
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.
 
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Butona basılı tutupmu taşıyacaksınız yoksa userfırm açılışındamı vs..
 
Katılım
9 Eylül 2005
Mesajlar
24
Mevcut form da açılış sonrası işlemler yapacağım. Açılış sonrası istediğim nesneyi Frame içerisine almayı istiyorum. Sonrasında Frame içinde konumlandıracağım. Fakat tutup taşıma olayını da merak ettim siz sorunca. Yapamadığım Frame dışında bir nesneyi Frame içine dahil etmek.
 
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
C#:
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
Yukardaki koduda userforma ekleyin.
Bir commnadbutton ve bir frame ekleyip deneyin.
Alttaki kod olmadan commandbutton arakada kaldığı için görükmüyor.Örnek olsun diye basitçe ekledim isteğe bağlı geliştirilebilinir bence.

Alttaki kodu bir modüle ekleyin transparant yapıyormuş.
C#:
#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
 
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Önceki mesajda yazdığım modül kodları dursun sadece userform kodlarını alttaki ile değiştiriseniz butona basılı tutup taşırsınız denedim çalıştı kodu yapay zeka verdi :)


Kod:
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
 
Katılım
9 Eylül 2005
Mesajlar
24
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.
 
Katılım
5 Kasım 2006
Mesajlar
580
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
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.
Rica ederim.Daha fazlasını bilmiyorum araştırmak gerekiyor.
Kolay gelsin.
Kodlara userform properties yani sanki tasarım modunda iken gibi kodlar görmüştüm galiba bunlar beni aşıyor.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,165
Excel Vers. ve Dili
2019 Türkçe
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.
 
Katılım
9 Eylül 2005
Mesajlar
24
Muzaffer Bey çok teşekkür ederim ilginize. Takıldığım yerler olursa sizin gibi değerli arkadaşlardan yardım alacağım. Fakat yine de ne yapmak istediğimi yazayım.
Excelde girmiş olduğum malzemelere göre yapmış olduğum bir tasarım var. Buna göre Form üzerinde Frame1 nesnesi içerisine bu ürünlerin resmini Frame nesnesi ve onun içerisine de İmage nesneleri oluşturarak bu görsellere göre çizim oluşturuyorum. Bir dolap tasarımı gibi düşünün. Ben bunu malzemeleri oluşturduğum Frameleri yerleştirmek istediğim framelere sonradan (boyutsal olarak kontrol edip uygun ölçüde oluşturduktan sonra) Frame içerisine alacaktım. İstediğim boyutu geçerse diğer dolabı oluşturuyorum vs.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,334
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Fare bırakıldığında,
C#:
Frame1.Controls.Add CommandButton1
ile koleksiyona ekleyin.
 
Üst