Değerli arkadaşlar,
Form üzerinde 5 adet çizgim var,her biri için tek tek vb kod yazmak yerine,formdaki metin kutusu içindeki değişkeni dim ile tanımlayarak ,Line2 vs. yerine L.Left=x kodunu yazmaya çalıştım ama nesne gerekli uyarısı alıyorum.Kod içinde nerede hata yaptım çok uğraşmama rağmen bulamadım.Yardımlarınız için şimdiden teşekkürler.
Aşağıdaki kodu deneyebilir misin?
Me.Controls("Line" & Forms!Form1!sayi.Value).Tag = "Line" & Forms!Form1!sayi.Value
For Each ctl In Me.Controls
If ctl.Tag = "Line" & Forms!Form1!sayi.Value Then
ctl.Left = 2500
ctl.Top = 2500
End If
Next
Sn. ozanakkaya,
Göndermiş olduğunuz kod için teşekkür ederim,gayet iyi çalışıyor.Sayenizde sorunum çözüldü.
Aynı anda metin kutularına da bunu nasıl uygulayabiliriz.Çünkü her bir çizginin bir ismi var ve çizgilerin hemen altlarında bulunmaları gerekiyor.Bu metin kutuları da referanslarını sayi' dan alıyorlar.
Tam anlayamadım ama örnek uygulama hazırladım. Metin kutuları çizgilerin altında.
Me.Controls("Line" & Forms!Form1!sayi.Value).Tag = "Line" & Forms!Form1!sayi.Value
Me.Controls("Metin" & Forms!Form1!sayi.Value).Tag = "Metin" & Forms!Form1!sayi.Value
For Each ctl1 In Me.Controls
If ctl1.Tag = "Line" & Forms!Form1!sayi.Value Then
ctl1.Left = 2500
ctl1.Top = 2500
End If
Next
For Each ctl2 In Me.Controls
If ctl2.Tag = "Metin" & Forms!Form1!sayi.Value Then
ctl2.Left = 2500
ctl2.Top = 3700
End If
Next
Sn. ozanakkaya,
Yanıtınız için çok teşekkür ederim.İkinci sorumu sanırım eksik yazdım,aynı anda'dan kastım aslında ;aynı for each next döngüsü içinde hem ctl1 ve hem ctl2 yi tanımlayabilirmiz şeklinde olması gerekiyordu.
Çünkü çok sayıda metin kutusu (ad,uzunluk,açı vb.) ve çok sayıda çizgi tipi var .Ayrıca mousemove olayında da ,mouse'un başlangıç noktası ve hareket yönüne göre dört adet (w >= 0 And h >= 0 , w >= 0 And h < 0 vb.)seçenek var.Dolayısıyla ayrı ayrı for each next döngüsü yazmam durumunda kod çok uzun ve karmaşık hale geliyor.