• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Maus hareketi ile textbox height

udentr2002

Altın Üye
Katılım
5 Kasım 2006
Mesajlar
1,503
Excel Vers. ve Dili
iş yerinde Office 365
evde Office 365
Merhaba,
Mausu textboxun üzerine getirdiğimde aşağıdaki kod ile textboxun hegit özelliğini arttırıyorum.
Kod:
Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
TextBox1.Height = 123
TextBox1.ZOrder 0

End Sub

Mausu texboxun üzerinden çektiğimde eski haline nasıl çevirebilrim?
 
Yeni konu açmanıza gerek yoktu. Vakit geç olduğu için cevap veremedim.

Hüseyin Bey'in mesajına ek olarak bu kodları kullanabilirsiniz;

ClassModule kodları
Kod:
Public WithEvents tbx As MSForms.TextBox

Private Sub tbx_MouseMove(ByVal Button As Integer, _
ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    tbx.Height = 123
End Sub


UserFom kodları
Kod:
Dim tbxs() As New Class1
Private Sub UserForm_Initialize()
    Dim Rky As Control
    For Each Rky In Controls
        If TypeName(Rky) = "TextBox" Then
            ReDim Preserve tbxs(i)
            Set tbxs(i).tbx = Rky
            i = i + 1
        End If
    Next Rky
End Sub

Private Sub UserForm_MouseMove(ByVal Button As Integer, _
    ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    For Each Evn In Me.Controls
        If TypeOf Evn Is MSForms.TextBox Then
            Evn.Height = 18
        End If
    Next Evn
End Sub

TextBox'ların üzerine geldiğinizde ve çekildiğinizde istenilen boyutu alır.
 
Hocam çok teşekkürler hemen deniyorum.
yeni konu açmamın sebebi uymayınca başka bir mantık kurmaya çalışmıştım. Ellerinize sağlık şimdi denemeye çalışıcam kendi projeme.
Hüseyin hocam ilginiz içinde teşekkür ederim.

Saygılarımla
 
Uymayınca yeni konu açmanıza gerek yok. ;)

Tamam... deneyip sonucu bildirirsiniz..
 
Murat hocam elinize sağlık. Tam istediğim gibi olmuş.

Hüseyin hocam ilginiz içinde tekrar teşekkür ederim.

Kolay gelsin.
 
Rica ederiz, güle güle kullanın..
 
Hocam şöyle bir sorun çıkıyor,
Sanırım mesala enalttaki textboxu açınca bir sorun yok ama aradaki textboxların üzerine mausla geldiğimde içindeki bilgiyi tam olarak göstermiyor.
Anlatmak biraz zor gibi o yüzden projemin bir örneğini göndericem. aradaki textboxun üzerine geldiğimde açıyor fakat sanırım alttaki textboxuda etkilediği için bilgileri tam olarak göstermiyor. Mausu textboxun üzerinden çektiğimiz an eski boyutuna dönüşse sorun çözülür gibime geliyor. Ekli dosyada uygulamalı olarak bakarsanız ne demek istediğimi daha iyi anlayabilirsiniz. maus textboxun üzerindeyken sadece o textbox büyüse diğerleri eski boyutunda kalmalı.

Sizi tekrar yorucam ama bakabilirseniz çok makbule geçecek hocam.

Saygılarımla
 

Ekli dosyalar

TextBox nesnelerini Frame nesnesinin içine aldığınız için TextBox'lardan çıkıldığında eski hâline dönmüyor. Çünkü; eski hâline (Height = 18) döndürecek kodlar UserForm_MouseMove olayında. Arada Frame nesnesi olduğu için eski hâline dönmüyor.

Bu sorunu çözmek için öncelikle bunun için, UserForm_MouseMove olayını silin ve UserForm'a bu kodları ilave edin;
Kod:
Private Sub Frame1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    For Each evn In Me.Controls
        If TypeOf evn Is MSForms.TextBox Then
            If evn.Value <> "" Then
                evn.Height = 18
                evn.Visible = True
            End If
        End If
    Next evn
End Sub
Şimdi de seçilen TextBox'ın içeriğinin tam görünmesi için bir altındaki Nesneyi görünmez yapalım.
Bunun için ise ClassModule kodlarını bu şekilde değiştirebilirsiniz;

Kod:
Public WithEvents tbx As MSForms.TextBox

Private Sub tbx_MouseMove(ByVal Button As Integer, _
ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Dim Rky As Control
        For Each Rky In Genel.Controls
            If TypeName(Rky) = "TextBox" Then
                say = say + 1
                If Rky.Name = tbx.Name Then
                    Genel.Controls("TextBox" & say + 1).Visible = False
                End If
            End If
    Next Rky
    tbx.Height = 123
End Sub
Deneyip sonucu bildirirsiniz...
 
Hocam tekrar çok teşekkür ederim. Sizi yoruyorum ama,
Bazen textboxları görünmez yaptıktan sonra geri göstermiyor.

ve deneme yaparken aralarda şu hatayı aldım
Kod:
Run time error '-21470224809 (80070057) 
Could not find the specified object
Hatasını verdikten sonra class module içindeki aşağıdaki kodu sarı işaretliyor.
Kod:
Genel.Controls("TextBox" & say + 1).Visible = False

ve garip olan her zaman yapmıyor biraz deneme yaparken bazen textboxlar görünmez olarak kalıyor

Hocam kusurumuza bakmayın gerçekten hakkınızı helal edin. Tekrar bakabilme şansınız var mıdır acaba?
 
Tekrar bakarım ama şu an başka bir konuyla ilgileniyorum.

Şöyle bir deneyelim: Frame1_MouseMove olayı kodlarındaki evn.Visible = True satırını ayrıca Next Evn satırından önce de yazın. Yani tekrar görünür yaparken TextBox'ın boş olup olmamasına bakmasın.. Tahminimce düzelecektir.
 
Hocam,

ben baya uğraştım ama yapamadım. Rica etsem sizi tekrar yoracam ama bakabilme şansınız var mı?
 
Şimdi tekrar dosyayı indirip #9. mesajda verdiğim kodları ilave ettim ve bir hata ile karşılaşmadım.
Hata aldığınız satır öncesine on error resume next yazıp geçebilirsiniz..


Boş TextBox'ların görünmemesinin bir sakıncası var mı? :dusun:
 
Hocam,
O userforma sonrasından değiştir ve sil butonları ekleyeceğim için o boş textboxların görünmesi lazım. yani tüm textboxların değil listboxa tıkladıktan sonra açılan textboxların üzerinde maus hareketinden sonrada boş olsada görünmesi lazım. Birde hocam textbox height boyutu gerçek olarak açılmıyor aradaki textboxların üzerine geldiğinizde o textboxun height boyutu 123 den küçük o değeri 200 yapıp deneyin aradaki textboxların boyu tam 200 olmuyor.

Hocam gerçekten hakkınızı helal edin bilginize ve emeğinize sağlık.
 
İlk soru için şunu önerebilirim; düzeltme yapılacaksa tekrar listboxtan seçim yapabilirsiniz.
İkinci soru için; istediğiniz boyut ne ise height değerini ona göre ayarlayın. 123 yaptığınızda 123 olmuyorsa fazla bir değer yazın 173 meselâ..
 
Hocam height değerini arttırdım ama değişmiyor yani aradaki textboxlarda yine aynı textboxları büyütüyor ama tam olarak değil. en son textboxu evet tam olarak büyütüyor ama aradaki textboxların üzerine geldiğinizde farklı oluyor alttaki textboxları mı tetikliyor anlamadım. Bir deneme yaparsanız demek istediğimi daha iyi anlayabilirsiniz hocam. inanın tekrar sizi yormaya utanıyorum ama :(
 
Sizin baktığınız değer ile benim baktığım değerler farklı olunca uzun metinlerdeki ayrıntıyı fark edemedim.
Genel.Controls("TextBox" & say + 1).Visible = False
satırının altına

bu satırı ilave edip deneyin;
Genel.Controls("TextBox" & say + 2).Visible = False
 
Hocam Allah razı olsun emeğinize ve bilginize sağlık.
Hakkınızı helal edin.

SAYGILARIMLA
 
Âmîn cümlemizden...

İyi çalışmalar.
 
Geri
Üst