Mouse ile Tıkla... Adını Yaz...

Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
Merhabalar,

Ek'te ki örnekte olduğu gibi bir UserForm'umuz var. Üzerinde de İmage Nesneleri... Mouse ile üzerlerine tıkladığımızda TextBox da bu yazacak...veya MsgBox ile uyaracak..

Ama aman dikkat

Private Sub Image1_Click()
................
End Sub

Olayını kullanmadan yapacağız bu işi...

Bir Sub Prosedürde yer alan Örneğin Do....Loop döngüsü içinde;
MouseDown veya MouseUp -Belki Case seçeneği - olayını kullanarak.

Mouse ile İmage1 e tıklayınca TextBox1 da "İmage1 e tıkladınız" yazdırabilirmiyiz?

Tabi diğerleri içinde geçerli olacak...

Bu Event olayını nasıl gerçekleştirmeliyiz...

Şimdiden Teşekkürler..
 
Son düzenleme:

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Click olayını neden kullanmak istemiyorsunuz anlayamadım.
 
Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
Sayın Levent Böyle bir soru bekliyordum...Sağolun... Çünkü tıklanacak 13 adet İmage nesnesi var ekranda... Buda 13 adet İmageXXX.Click() prosedürü demek... Halbuki bir döngü içinde bu nesnelerden hangisine tıklandığını tespit edebilirsek program daha kolaylaşacak.

Yoksa 13 adet Sub Prosedür ile kontrol edip ana programa dönmek zorlaşacak..
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Bunun için class modül kullanmak işinizi kolaylaştıracaktır. Ekli dosyayı inceleyin.
 
Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
Çok ciddi söylüyorum olmaz böyle bir şey sağolun... Peki bu image in numarasını nasıl alabiliriz. Yani sadece 1..2...3.. gibi

Sizin hızınıza yetişmek mümkün değil... Muhteşem tek kelime ile..
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Rica ederim.

Class modülde yazılı olan kodu aşağıdaki ile değiştirin.

Kod:
Private Sub resim_Click()
UserForm1.TextBox1 = Replace(resim.Name, "Image", "") & " nolu resme tıkladınız."
End Sub
 
Katılım
15 Ocak 2008
Mesajlar
530
Excel Vers. ve Dili
office 2013 Ingilizce
hocam merhaba bu class modul un kullanımı hakkında nereden detaylı bılgı bulabılırız..???
 
Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
Levet Hocam tekrar tekrar teşekkürler...
 
Katılım
15 Ocak 2008
Mesajlar
530
Excel Vers. ve Dili
office 2013 Ingilizce
levent hocam acaba bıze yardımcı olabılırmısınız class modul ıle ılgılı detaylı bılgı nerden bulabılırız
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
levent hocam acaba bıze yardımcı olabılırmısınız class modul ıle ılgılı detaylı bılgı nerden bulabılırız
Nette ararsanız çok sayıda kaynağa ulaşabilirsiniz. Aşağıdaki linkte bu konuyla ilgili örnekler mevcut incelemenizi öneririm. Bende fırsat bulursam nesnelere ortak olay tanımlanmasına yönelik bir makale yazmaya çalışırım.

Class Module Uygulamaları
 
Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
Aradım Ama Uygun örnek Yok

Nette ararsanız çok sayıda kaynağa ulaşabilirsiniz. Aşağıdaki linkte bu konuyla ilgili örnekler mevcut incelemenizi öneririm. Bende fırsat bulursam nesnelere ortak olay tanımlanmasına yönelik bir makale yazmaya çalışırım.

Class Module Uygulamaları
Sayın Admin.. Rahatsız etmek istemedim buna inanın.

UserForm da 13 adet yan yana dizlmiş İmage Nesnesinin Mouse ile üzerlerine tıklandığında Bir Prosedür içinde İmage numaralarının bir değişkene atanması işleminin nasıl yapılacağı konusunda yardıma ihityacım var. Örnek dosya istediğinizde hazır.
 
Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
Yardımlarınız için şimdiden teşekkürler...
 
Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,591
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Örnek dosyanızı eklerseniz daha faydalı olacaktır.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Dosyanıza gerekli ilaveleri yaptım. İsterseniz e-posta adresinize göndereyim tamamlanınca foruma eklersiniz. Gerçekten çok zor fakat çok başarılı bir çalışma yapmışsınız tebrik ederim.

Not: Bu cümleden sonra üyelerimizde çalışmayı merakla bekleyeceklerdir sanıyorum.
 
Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
Sayın Levent Menteşoğlu yardımlarınız için çok teşekkürler. İnanın büyük bir kolaylık sağladınız. Size de söylediğim gibi Bu benim Sözüm... Program Bitince tüm arkadaşların kullanımına sunacağım.
Ama inanın Zor olan kısmını siz yaptınız, Ohel'in mantığını zaten daha önce Amiga'da yapmıştım. Biliyorum.

Sayın Korhan Ayhan siz değerli Uzmanlarımızın desteğini her zaman görüyoruz. Programın aşamalarında eğer kabul ederseniz değerli fikirlerinizden yararlanmak benim için kıvanç olacaktır.

Saygılarımla...
 
Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
Kağıt Dağıtımı Nasıl Yapılır...

Değerli Yardımlarınıza ihtiyacım var...

Class Module ile Player kağıtlarının yere atılması olayını aşağıda ayrıntılı olarak açıklanan biçimde; Sayın Levent Menteşoğlu yaptılar sağolsun...

Program içinde Player ve Computer kartlarının tutulduğu CardI(J, I) ataması ile herkezin kağıt seçme ve atma olayını nasıl yürütebiliriz.?
Bunu Class Modul içinde mi yapmamız gerek yoksa UserForm üstünde devam eden oyun akışı içinde yapabilirsek nasıl yapabiliriz..?

Sayın Levent Menteşoğlu tarafından yapılan Class modül dahil olmak üzere Oyun Akışı aşağıdadır. Açıklamalarda satır satır içinde...

Saygılarımla...

'----------------------------------------------------------------------------------------
For J = 1 To Son
'[J] O El Dağıtılan Kağıt Sayısı 1....13 oyunun cinsine göre belirleniyor.
For I = 1 To 4
' Oyuncular 1..Player 2-3-4 Computer
Dağıt (I)
'Kağıt dağıtma Animasyonu çağırılıyor
If I = 1 Then
'Player için Dağıtılan Kağıtlar el sayısı kadar
'Görünür olarak ekrana açılıyor. Yani kart image'leri
'Player in ekranda görünen 61-72 nolu image'lere atanıyor.
GoSub Player
End If

CardI(J, I) = CardB(((I - 1) * Son) + J)
'O el dağıtılan kartlar tüm oyunculara göre atanıyor.

Next I
Next J
GoTo KozBelirler
'Kağıt dağıtımından sonra KOZ belirlenmeye gidiliyor...

Player:
'Player'ın kağıtları ekrana basılır
For K = 1 To J
Baş = (UserForm1.Width - Controls("Image" & K + 60).Width) / 2
Baş = Baş - ((J - 1) * 18)
Controls("Image" & K + 60).Picture = Controls("Image" & CardB(K)).Picture
Controls("Image" & K + 60).Left = Baş + (K * 30)
Controls("Image" & K + 60).Visible = True
Next K
Return

KozBelirler:
If Oyun <= 12 Then
Koz = Son * 4 + 1
Image54.Picture = Controls("Image" & CardB(Koz)).Picture
Koz = CardK(CardB(Koz))
ElseIf Oyun = 13 Then
Koz = 1
Image54.Picture = Controls("Image" & 13).Picture
ElseIf Oyun = 14 Then
Koz = 2
Image54.Picture = Controls("Image" & 26).Picture
ElseIf Oyun = 15 Then
Koz = 3
Image54.Picture = Controls("Image" & 39).Picture
ElseIf Oyun = 16 Then
Koz = 4
Image54.Picture = Controls("Image" & 52).Picture
Else
Koz = 0
Image54.Picture = Ura.Picture
End If

' Koz Belirleme işlemi bittikten sonra oyun başlıyor.

'Burada Levent Beyin Class Modul devreye giriyor.

For I = 1 To 4
'Ama ben Class modülde Tüm oyunculara göre ve ellerindeki
' Kağıtlara göre CardI(J, I) atamasını yapamadım.

For J = 1 To Son
Cells(J, 4 + I) = CardI(J, I) & " - " & CardK(CardI(J, I))
Next J

Next I

'Eğer bunu mantığını bir kavrasam eldeki kağıdın cinsini belirleyip atılacak kağıdı seçmeyi, yoksa koz atmayı yapacağım.

'Tabii bu işlemi burada mı yapacağım yoksa Class modül içindemi Yapmam gerekecek. Burada Yapmak için Class modüll UserForm dan nasıl çağırılacak.

'Bu konuda bilgi rica ediyorum...
'-----------------------------------------------------------------------------------------------


Public WithEvents resim As MSForms.Image

Private Sub resim_Click()

ad = Replace(resim.Name, "Image", "")
For I = 1 To 4
UserForm1.Controls("Image" & I + 54).Picture = LoadPicture("")
Next I
Application.Wait Now + TimeValue("00:00:01")

resim.Visible = False
UserForm1.Image55.Picture = resim.Picture 'Player in Attığı Kağıt
Randomize Timer
UserForm1.Image55.Left = 190 + Int(Rnd * 50) + 5
UserForm1.Image55.Top = 132
UserForm1.Image55.Visible = True
UserForm1.Image55.ZOrder 0

PlaySound 1, 1
Application.Wait Now + TimeValue("00:00:01")

UserForm1.Image56.Picture = UserForm1.Controls("Image" & CardI(1, 2)).Picture 'Computer 1 kağıdı
Randomize Timer
UserForm1.Image56.Left = 140 + Int(Rnd * 50) + 5
UserForm1.Image56.Top = 100
UserForm1.Image56.Visible = True
UserForm1.Image56.ZOrder 0

PlaySound 1, 1
Application.Wait Now + TimeValue("00:00:01")

UserForm1.Image57.Picture = UserForm1.Controls("Image" & CardI(1, 3)).Picture 'Computer 2 kağıdı
Randomize Timer
UserForm1.Image57.Left = 190 + Int(Rnd * 50) + 5
UserForm1.Image57.Top = 66
UserForm1.Image57.Visible = True
UserForm1.Image57.ZOrder 0

PlaySound 1, 1
Application.Wait Now + TimeValue("00:00:01")

UserForm1.Image58.Picture = UserForm1.Controls("Image" & CardI(1, 4)).Picture 'Computer 3 kağıdı
Randomize Timer
UserForm1.Image58.Left = 250 + Int(Rnd * 50) + 5
UserForm1.Image58.Top = 100
UserForm1.Image58.Visible = True
UserForm1.Image58.ZOrder 0

PlaySound 1, 1
Application.Wait Now + TimeValue("00:00:01")

End Sub
 
Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
Yard&#305;mlar&#305;n&#305;z&#305; ve Fikirlerinizi Bekliyorum...
 
Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
Herkeze &#351;imdiden iyi ak&#351;amlar... Sab&#305;rla bekliyorum...
 
Üst