form dışı komut nasıl çalıştırılır??

Başlatan mech, 19 Ocak 2013, 00:36:44

mech

Merhaba Arkadaşlar. VB.NET'de bir değişkenin deiğişimine göre form içindeki mesela label1.text'i nasıl değiştirebilirim. Mesela;

class form1
if y=1 then label1.text="Tamam" Else label1.text="Bekliyor"
end class

Bu durumda bu cümle bir kalıp dışında olamaz hatası veriyor. Yardım ederseniz sevinirim. Teşekkürler.
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Şarttır

muhittin_kaplan

bu olayı hangi olay olunca yapmak istiyorsun

OG

#2
VB için konuşuyorum,

y değişkenin general declaration da tanımlanması gerek, yani formun en üstünde. Bunun anlamı y değişkeni tüm prosedürlerde görülebilmesini sağlar.

ayrıca
Alıntı Yapbu olayı hangi olay olunca yapmak istiyorsun
dendiği gibi, o işi ortaya çıkaracak bir durum lazım,
bir butona basmak gibi
veya bir timer ile istediğin sıklıkta y değişkenin o değeri almışmı diye kontrol etmek gibi.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

mech

Teşekkürler.  Anladığım kadarıyla, biz komutları picbasic'teki gibi boşta her zaman denetlenecek şekilde koyamıyoruz. İlla bir durum olması gerekiyor.
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Şarttır

OG

#4
pic de durum farklı.
Donanımı ve veya yazılımı çalışan bir işlemci var, donanımı geçersek,
Yazılımın çalışması demek, clock palslerinin her atışında (veya tam doğrusu 1 instruction cycle da) programda 1 adım ileri git demektir.

Yani en üstten başlar en alta kadar adım adım gider. Yolu üstündeki yazılımı icra eder. Yolu üzerindeki tüm olaylar tek bir prosedür kapsamında gibidir.

Yani multitasking yok.

PC de ise işlemci sayısız işlem ile uğraşır. Senin yazdığın program içinde bile ne ile uğraşacağını sen yönlendirmen gerekir.

FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

cicjoe

degiskenini property olarak tanimlayip, get/set ozellikleri icinde label.text degistirebilirsin en basitinden, hic event'e falan girmeden..

c# icin ornek vereyim, vb'ye uyarlarsin

private int number;
public int Number
{
   get { return number; }
   set
   {
      labelx.text = number.ToString();
      number = value;
   }
}

VB icin surdan bakabilirsin...

http://msdn.microsoft.com/en-us/library/6b85bc00.aspx

Baypars

Alıntı yapılan: mech - 19 Ocak 2013, 09:21:54
Teşekkürler.  Anladığım kadarıyla, biz komutları picbasic'teki gibi boşta her zaman denetlenecek şekilde koyamıyoruz. İlla bir durum olması gerekiyor.


Durum kontrolü programın işlevselliği ve sağlamlığı açısından önemlidir; ancak illa ki durum olmasına gerek yok.

Form açıldığında bir timer nesnesi koyarız ve interval değerini 1 yaparız.Saniyenin binde biri aralıkta, istediğimiz komutu çalıştırabiliriz.Bu da yeterli olur diye düşünüyorum.

Sizin için örnek bir proje yazdım buyrun, umarım işe yarar:
Dil:vb 2008

http://s2.dosya.tc/server/vCbDdd/formd___.rar.html

Her ihtimale karşı kodlar:

Public Class Form1
    Dim y As String
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
            Timer1.Interval = 1
            Timer1.Start()
        Catch ex As Exception

        End Try
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Try
            If y = "1" Then
                Label1.Text = "Tamam"
            Else
                Label1.Text = "Bekliyor ..."
            End If
        Catch ex As Exception

        End Try
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
            y = 1
        Catch ex As Exception

        End Try
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Try
            y = 0
        Catch ex As Exception

        End Try
    End Sub
End Class






muhittin_kaplan

hocam sizin tabirinizle bu bile bir durumdur

Alıntı YapForm açıldığında bir timer nesnesi koyarız ve interval değerin

timer tick olayını tetikler bu dediğiniz.
Eğer vb.net te olay temelli program yazmak istemiyorsanız console da yazmanız gerekir. diğer durumlarda yolunuz kesinlikle EVENT lere çıkar.

Baypars

Alıntı yapılan: muhittin_kaplan - 23 Şubat 2013, 11:02:19
hocam sizin tabirinizle bu bile bir durumdur

timer tick olayını tetikler bu dediğiniz.
Eğer vb.net te olay temelli program yazmak istemiyorsanız console da yazmanız gerekir. diğer durumlarda yolunuz kesinlikle EVENT lere çıkar.


Haklısınız aslında bu da "form load" olayıdır; ancak "form_load" kendiliğinden başladığı için arkadaşın ihtiyacını karşılar nitelikte olacağı kanısındayım.

mech

#9
Alıntı yapılan: Baypars - 22 Şubat 2013, 20:52:27

Durum kontrolü programın işlevselliği ve sağlamlığı açısından önemlidir; ancak illa ki durum olmasına gerek yok.

Form açıldığında bir timer nesnesi koyarız ve interval değerini 1 yaparız.Saniyenin binde biri aralıkta, istediğimiz komutu çalıştırabiliriz.Bu da yeterli olur diye düşünüyorum.

Sizin için örnek bir proje yazdım buyrun, umarım işe yarar:
Dil:vb 2008

http://s2.dosya.tc/server/vCbDdd/formd___.rar.html

Her ihtimale karşı kodlar:

Public Class Form1
    Dim y As String
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
            Timer1.Interval = 1
            Timer1.Start()
        Catch ex As Exception

        End Try
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Try
            If y = "1" Then
                Label1.Text = "Tamam"
            Else
                Label1.Text = "Bekliyor ..."
            End If
        Catch ex As Exception

        End Try
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
            y = 1
        Catch ex As Exception

        End Try
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Try
            y = 0
        Catch ex As Exception

        End Try
    End Sub
End Class

Teşekkürler. Time Tick olayını kullanarak işimi gördüm. Yalnız, Bu catch try kullanmadım. Bunları kullanmazsam ne olur.
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Şarttır

muhittin_kaplan

Hata Olursa Program Çöker. Try Catch -end try blogu kullanıcıya bir hata oluştuğunda bildirmek yada bu hatayı yakalayıp programın çökmesini engellemek için kullanılır.

try
   çalıştırılıcak kodlar...
   ...
   ...
catch
   hata oluştuğunda çalışacak kodlar....
   ...
   ...
endtry