Variablers räckvidd och livslängd

Variabler Matris

Beroende på var man deklarerar en variabel, får den olika räckvidd och livslängd. Deklareras den i en Private Sub för till exempel en Button, kan variabeln endast användas när man trycker på just den knappen. Deklareras variabeln ovanför all kod, under texten "Windows Designer generated code", kan den användas i alla Private Sub i hela formuläret.

Variabeln räcker däremot inte över till ett annat formulär i projektet. Om en variabel skall kunna nås i alla formulär måste man deklarera den i en modul.

Gör en form med en textruta och en knapp. Ge Button1 koden:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim tal As Integer
tal += 2
TextBox1.Text = tal
End Sub

Om vi nu kör programmet växer inte variabeln tal utan det står 2 hur många gånger vi än klickar på knappen. Variabeln tal lever alltså inte längre än just när vi klickar på knappen.

Därefter nollställs variabeln och nästa gång vi klickar på knappen räknar programmet från noll igen. Om vi vill att variabeln skall behålla sitt värde efter knapptryckningen, måste vi deklarera variabeln ovanför Private Sub.

Windows Designer generated kod

Dim tal As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

tal += 2
TextBox1.Text = tal
End Sub

Nu adderar programmet 2 till det gamla värdet på tal varje gång vi klickar på knappen, därför att tal behåller värdet det tilldelades vid klickningen. Har vi en knapp till, kan värdet på variabeln användas även i koden för den knappen.

Moduler

Lägg till en modul genom att i menyn klicka på Project-Add Windows Form. I fönstret som visas väljer vi Module.

Klicka på Open och en modul syns i Solution Explorer. Lägg på samma sätt till ett nytt formulär. Klicka på Project-Add, välj Add Windows Form och välj sedan Windows Form.

Nu har vi två formulär och en modul i projektet. I en modul kan man skriva kod till projektet men det går också att spara modulen och öppna den i ett annat projekt. Det är ju bra att slippa skriva samma kod mer än en gång. Men nu skall vi alltså använda modulen till att skapa en variabel som får en räckvidd över flera formulär.

Klicka på modulen och visa redigeringsfönstret. Där står:

Module Module1
End Module

Mellan dessa rader kan variablerna deklareras. Det är enkelt, skriv bara Public i stället för Dim:

Public tal As Integer

Lägg nu ut en knapp och en TextBox i Form2. Observera att i Form2 får knappen namnet Button1, alltså samma namn som i Form1 men det blir inga namnkonflikter när de ligger i olika formulär. Vi måste kunna göra Form2 synlig också, vilket beskrivits i en tidigare lektion.

I Form1 skriver vi koden:

Dim NyForm As New Form2()
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

tal += 2
TextBox1.Text = tal
NyForm.Visible = True
NyForm.TextBox1.Text = tal
End Sub

Observera att vi med raden NyForm.TextBox1.Text = tal kan styra var värdet i variabel skall hamna i det andra formuläret. I knappen i Form2 skriver vi:

tal += 2
TextBox1.Text = tal

När vi kör programmet och klickar på knappen ökar talet i TextBoxen med två. Samtidigt öppnas Form2 och det står 2 även i den TextBoxen. Klickar vi på knappen i Form2 ökas värdet på variabeln. Vi har alltså en global variabel som sträcker sig över alla formulär.

Variabler Matris

SupportData.Net
©