• DİKKAT

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

İmage nesnesi sorunu

Kardiyak

Altın Üye
Katılım
25 Aralık 2008
Mesajlar
60
Excel Vers. ve Dili
2010 türkçe
Personel bilgileri için bir userform hazırlamaya çalışıyorum.
listboxtaki personel isimlerinden birine tıklanınca textboxlara bilgileri geliyor.
ayrıca listboxun tıklama olayındaki şu kod ile Foto klasöründen tcsi ile aynı olan fotoğraf yükleniyor.
Kod:
Set kls = CreateObject("Scripting.FileSystemObject")
buld = pertc & ".jpg"
varmıd = kls.FileExists(ThisWorkbook.Path & "\Foto\" & buld)
If varmıd = True Then
    perfoto.Picture = LoadPicture(ThisWorkbook.Path & "\Foto\" & buld)
    Else
    perfoto.Picture = LoadPicture(ThisWorkbook.Path & "\Foto\00.jpg")
    End If
listboxta personellere tıklandıkça bilgiler ve resim uygun olarak geliyor, eğer tc isimli jpg bulunamazsa yine foto klasöründeki 00.jpg gösteriliyor.

resmi olmayan yada yeni personel kaydı için imagea çift tıklandığında seçilen resmi tc.jpg olarak foto klasörüne otomatik kaydetsin diye image doubleclick olayına şu kodu ekledim.
Kod:
Private Sub perfoto_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Set kls = CreateObject("Scripting.FileSystemObject")
bulr = pertc.Value & ".jpg"
varmır = kls.FileExists(ThisWorkbook.Path & "\Foto\" & bulr)
If varmır = True Then
    Cancel = True
    Exit Sub
Else
    If MsgBox("Hazırladığınız resmi seçip eklemek istiyor musunuz?", vbQuestion + vbYesNo, "Resim Ekleme") = vbNo Then Exit Sub
    Dim evn As Variant
    evn = Application.GetOpenFilename("Resim Dosyaları (*.jpg", 0, "Resim dosyası", "Open", False)
    If evn = False Then Exit Sub
    Personel.perfoto.Picture = LoadPicture(env)
    SavePicture Personel.perfoto.Picture, ThisWorkbook.Path & "\Foto\" & bulr
End If
End Sub

Bunun üzerine farkettim ki image nesnesine tıklandıktan sonra listleden başka isim seçildiğinde textboxlar değişiyor ama image değişmiyor tıklandığı hali ile kalıyor. Formun ilk açıldığındaki LoadPicture="" tıklandı ise boş, bulunamayan bir resim tıklandı ise 00.jpg, yada hangi personel resmi ise tıklanan bundan sonraki seçimlerde o gösterilmeye devam ediyor. Aslında kodlar arkada düzgün çalışmaya devam ediyor muhtemelen çünkü kls.FileExists(ThisWorkbook.Path & "\Foto\" & bulr)=false durumunda çift tıkladığımda imageda başka bir resim görüntüleniyor olsa da 00.jpg varmış gibi davranmaya devam ediyor.

Tıklamadan sonra image nesnesi userform tekrar açılana kadar update olmuyor tıklandığı hali ile kalıyor. image'ın tıklama yada çift tıklama kodlarını silsem bile durum değişmiyor.
 

Ekli dosyalar

Son düzenleme:
Benzer bir durum daha önce benim başıma da gelmişti. Nedenini bilmediğim gibi bu problemi de gideremedim. Hatta siteden başka başka kişilerin hazırladığı çalışmaları da inceledim. Hepsinde de image nesnesine tıklandıktan sonra image nesnesindeki resim sabit kalıyor.
Ben problemi şu şekilde çözmüştüm.
Öncelikle image nesnesinin üzerine label ekledim. (başka bir nesne de olur)
Bu labelin backstyle özelliğini transparent yaptım. Ve tıklama kodlarını labele uyarladım.
Yanlışlıkla tıklanma ihtimaline karşılık da image nesnesinin enabled özelliğini false yaptım.
O zaman bu şekilde çözmüş, işimi görmüştüm. Muhtemelen daha güzel ve daha doğru çözümler de olacaktır. Bu çözümleri ben de merakla bekliyorum.
İyi çalışmalar...
 
Benzer bir durum daha önce benim başıma da gelmişti. Nedenini bilmediğim gibi bu problemi de gideremedim. Hatta siteden başka başka kişilerin hazırladığı çalışmaları da inceledim. Hepsinde de image nesnesine tıklandıktan sonra image nesnesindeki resim sabit kalıyor.
Ben problemi şu şekilde çözmüştüm.
Öncelikle image nesnesinin üzerine label ekledim. (başka bir nesne de olur)
Bu labelin backstyle özelliğini transparent yaptım. Ve tıklama kodlarını labele uyarladım.
Yanlışlıkla tıklanma ihtimaline karşılık da image nesnesinin enabled özelliğini false yaptım.
O zaman bu şekilde çözmüş, işimi görmüştüm. Muhtemelen daha güzel ve daha doğru çözümler de olacaktır. Bu çözümleri ben de merakla bekliyorum.
İyi çalışmalar...

Bu şekilde bir çözüm de şimdilik işimi görecektir. Öneriniz için teşekkürler.
 
Geri
Üst