VB 6.0 da Option Button ile Küçük Bir Uygulama

  • Konuyu başlatan Konuyu başlatan cagoo
  • Başlangıç tarihi Başlangıç tarihi

cagoo

Öğrenci
Katılım
5 Kasım 2014
Mesajlar
3
Reaksiyon puanı
0
Puanları
0
Merhaba hocanın verdiği bir ödev bu fakat baya uğraşmamıza rağmen biraz sıkıntı çekiyorum ya kafam allak bullak oldu iyice bilen birisi bir yardım eli uzatsın aşağıda soruyu yazıyorum onun altına da kendi yaptığım kodları yazıcam fakat nerde hata var çözemedim hangi butonu seçersem seçeyim izmire atıyor ve İzmir şehri seçilmiştir mesajını veriyor.


5 adet option box seçiniz. İsimlerini 5 adet il ismi yapınız. Forma bir buton koyunuz. Butona basıldığı zaman msgbox ile hangi il seçildi ise onu gösteren programı "on n goto" döngüsü ile yapınız.


Kod:
Dim sehir


Private Sub Command1_Click()


On sehir GoTo izmir, manisa, balıkesir, bursa, istanbul


izmir:
Option1.Value = False
MsgBox ("İzmir şehri seçilmiştir."): End


manisa:
Option2.Value = False
sehir = MsgBox("Manisa şehri seçilmiştir."): End


balıkesir:
Option3.Value = False
MsgBox ("Balıkesir şehri seçilmiştir."): End


bursa:
Option4.Value = False
MsgBox ("Bursa şehri seçilmiştir."): End


istanbul:
Option5.Value = False
MsgBox ("İstanbul şehri seçilmiştir"): End




End Sub
1CgMuji.jpg
 

eSa

Dekan
Katılım
5 Kasım 2011
Mesajlar
9,782
Reaksiyon puanı
352
Puanları
263
Form üzerine 1 adet option button koyup ismini örneğin optSehir yap. Daha sonra üzerinde sağ tıklayıp kopyala de ve yine form üzerinde yapıştır. VB sana aynı isimde bir kontrol olduğunu ve bunu indexli olarak kullanıp kullanmayacağını soracaktır. Evet deyin.

Böylece aynı isimde iki kontrolun oldu, bunu 4 defa daha tekrarla. (Yani istediğin şehir ismi kadar.)

Şimdi indexi= 0 dan başlayan aynı isimli 1 den fazla kontrolün oldu. Her birinin caption değerlerine istediğin Şehirlerin ismini yaz.

İlk option buttonunun value değerini true yapabilirsin. Form ilk açıldığında seçili gelsin.

Daha sonra forma bir button koy ve click olayına şunları yaz.

5 şehir yazacağını varsayarak 0 to 4 yazdım. option sayısına göre değiştirirsin.

Kod:
Dim i as integer

for i=0 to 4

if optSehir(i).value then
   msgbox "Seçilen Şehir : " & optsehir(i).caption
   exit for
end if

next i

- - - Mesaj Güncellendi - - -

Soruyu tam okumamışık, :(

Bu işin bin tane kolay ve pratik yolu varken, goto ile ugraşmak da nedir anlamıyorum. sanki gwbasic ile programlama yapıyoruz da goto 10 diyecez. Hayret birşey.

Her neyse kardeşim.

şurada ;

On sehir GoTo izmir, manisa, balıkesir, bursa, istanbul

sehir değiskeninin degeri yok. dolayısı ile ilk labele gidip oradan da end ile sonlanıyor programın.
 

cagoo

Öğrenci
Katılım
5 Kasım 2014
Mesajlar
3
Reaksiyon puanı
0
Puanları
0
Hocam sağolasın uğraştığın için fakat hatamı buldum şu şekilde olayı çözdüm ve normalde on goto döngüsünün pek kullanılmadığınıda biliyorum ama ne beklersiniz üniversite ders planlamasında bunlar var :)


Kod:
Dim sayi



Private Sub Command1_Click()


On sayi GoTo izmir, manisa, balıkesir, bursa, istanbul


izmir:
Option1.Value = False
MsgBox ("İzmir şehri seçilmiştir."): End


manisa:
Option2.Value = False
sehir = MsgBox("Manisa şehri seçilmiştir."): End


balıkesir:
Option3.Value = False
MsgBox ("Balıkesir şehri seçilmiştir."): End


bursa:
Option4.Value = False
MsgBox ("Bursa şehri seçilmiştir."): End


istanbul:
Option5.Value = False
MsgBox ("İstanbul şehri seçilmiştir"): End


End Sub
Private Sub Option1_Click()
sayi = 1
End Sub


Private Sub Option2_Click()
 sayi = 2
 End Sub


Private Sub Option3_Click()
  sayi = 3
  End Sub


Private Sub Option4_Click()
  sayi = 4
  End Sub


Private Sub Option5_Click()
  sayi = 5
  End Sub
 

eSa

Dekan
Katılım
5 Kasım 2011
Mesajlar
9,782
Reaksiyon puanı
352
Puanları
263
Şu da dursun şurada belki birilerine lazım olur. :wink:

Kod:
Dim x As Control


For Each x In Me.Controls
    If TypeOf x Is OptionButton Then
        If x.Value Then
            MsgBox "seçili olan : " & x.Caption
        End If
    End If
Next x
 

falcon291

Profesör
Katılım
6 Eylül 2012
Mesajlar
1,360
Reaksiyon puanı
45
Puanları
228
Üniversitedeki hocaların sorunu bu işte, en tırt öğrenciler araştırma görevlisi kalıyor, sonra profesörlüğe kadar yükseliyor.

on n goto yapısı gibi bir yapıdan haberim bile yoktu, yapısal programlamada goto kullanılmaması önemle belirtilirken böyle bir ödev ilginç olmuş. Arkadaşlar goto kötüdür. VB'de benim için tek kullanıldığı yer o da mecbur kaldığımda on error goto yapısıdır ve bu durumda bile kullanmak zorunda kalmak hoşuma gitmez.

Sözün kısası goto kullanmayın. Bu arada [MENTION=194661]eSa[/MENTION] senin yaklaşımın ikinci bir grup radio button olması durumunu dikkate almıyor, bu yüzden doğru değil. İlk çözüm salak goto yapısı kullanılmaması dışında daha doğru.

Selamlar,
 

eSa

Dekan
Katılım
5 Kasım 2011
Mesajlar
9,782
Reaksiyon puanı
352
Puanları
263
Haklısın. İkinci grup aklıma gelmedi, öylesine yazmıştım. Öyle bir durumda tag veya başka bir özellik ile ayrılabilir, her neyse. Dediğin gibi goto kullanmak nesne tabanlı yazılıma ters. Ben kullanmıyor muyum? Evet kullanıyorum. Ama yalnızca şu şekilde:

on error goto hata:


hata:
msgbox err.number & err.description


Maksat program kırılmasın
:)
 
Üst