31 Ocak 2015 Cumartesi

Excel Soru-Cevap Vol12

Soru:  Yazmış olduğum bir makroda UserForm üzerindeki Image1’e
Image1.Picture = LoadPicture("C:\Belgelerim\Ali.jpg")
satırı ile resim alıyorum. Fakat resmin bilgisayarımdaki adı ya da yolu değişince resim görünmüyor. Resmi dosyaya eklemenin bir yolu yok mu? Yani yukarıdaki ilgili adresten almayıp dosyaya eklesin.

Cevap: Bu şekilde eklediğiniz bir resim HDD'de yeri değişince normal olarak Image nesnesi içersinde görüntülenmez. Yani teşhis doğru.
Şimdi sorunuzun cevabına gelelim.
Eğer Image nesnesi içerisine tek bir resim alacaksanız sorun olmayacaktır bunu dosyanızdaki Image nesnesine gömebilirsiniz. Bunun için yapmanız gereken yöntem VBE'deki Properties penceresinde bulunan Picture özelliğini kullanmaktır.

1. Image nesnesini seçin.
2. Properties penceresindeki Picture özelliğine tıklayın.
3. Ekrana gelen pencereden istediğiniz resmi seçin. Yolu önemli değil.
4. Tamam düğmesine tıklayın.

Resmin Image nesnesine aktarıldığını göreceksiniz. Artık bu resim image nesnesine gömülü hale geldi. Yani HDD'de bulunan resimle herhangi bir ilişkisi kalmadı. Unutmayın bu sadece tek bir resim için geçerlidir. Siz de sorunuzda aksini belirtmemişsiniz.

Soru (Devam): Resim birden fazla. Acaba böyle olunca mümkün mü?

Cevap (Devam): Sizin için en uygun yöntemi aşağıya adım adım yazıyorum. Ancak bunun için bilgisayarınızda C:\Windows\System\mscomctl.ocx dosyası bulunmalı. Bu dosyanın Additional Controls menüsündeki tam adı Microsoft ImageList Control 6.0

1. Bir UserForm oluşturun.
2. UserForm'un üzerine İmageList, İmage, ListBox nesneleri ekleyin.
3. ImageList1 nesnesin seçin.
4. Properties penceresinden Custom Özelliğine tıklayın. Property Pages penceresi açılacaktır.
5. Images sayfa sekmesine geçin.
6. Insert Picture Düğmesine tıklayın ve resimlerinizi bularak bu kutuya aktarın.

Resimleriniz ImageList1 nesnesine aktarıldığı anda HDD ile işiniz kalmadı demektir. O resimlerin yeri değişse de ImageList1 deki resimler kalıcıdır.
Yukarıdaki işlemleri tamamladıktan sonra şuna dikkat edin ImageList1 nesnesindeki her resmin üzerine tıkladığınızda Index numarasının 1’den başlayarak arttığını göreceksiniz. Ben bu örneği 4 adet resime göre verdim. Aşağıdaki kodları UserFormun kod sayfasına yazın

Private Sub ListBox1_Click()
Image1.Picture = _
ImageList1.ListImages(ListBox1.ListIndex + 1).Picture
End Sub

Private Sub UserForm_Initialize()
ListBox1.AddItem "Resim1"
ListBox1.AddItem "Resim2"
ListBox1.AddItem "Resim3"
ListBox1.AddItem "Resim4"
End Sub


Resimlerin yerlerini değiştirseniz de programınızda bir değişiklik olmayacak. Lütfen yukarıda bahsettiğim ocx dosyasını bulun. Herhangi bir Visual Basic 6.0 cd si içerisinde bulunan bir dosyadır. Bulun ve Tools menüsünden References'den dosyanızı programa tanıtın. Bu tanıtım hakkında forumda yazı bulunmaktadır (http://www.office.gen.tr/forum/viewtopic.php?t=202) . Eğer bilgisayarınızda VB 6 kurulu ise ya da bu dosya varsa sorun yok demektir. Ben bilgisayarınızda olmaması üzerine ihtimalleri yazdım.

Hiç yorum yok:

Yorum Gönder