German Eigenschaften von View's in einer Schleife ändern

PeBo007

Member
Licensed User
Longtime User
Ich möchte gerne in einer For-Next Schleife z. B. die Text-Eigenschaft aller Label View's = "" oder die Tag-Eigenschaft mit einer fortlaufenden Zahl setzen.
Wenn ich die ganzen Label View's über den Designer zur Activity hinzugefügt habe, um das Layout Pixelgenau gestalten zu können, gelingt es mir nicht diese in einer Schleife zu bearbeiten.
Ich weis natürlich, dass dieses mit Views, die anstatt mit dem Designer hinzugefügt, sondern nur mit dem Code erzeugt wurden, problemlos möglich ist.

Sub Globals
Dim Button1 As Button
Dim Label1 As Label
Dim Label2 As Label
.
.
Dim Label20 As Label
End Sub

Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout ("Layout1")
Dim i As Int
End Sub

Ich möchte halt nicht folgendes schreiben müssen:

Sub Button1_Click
Label1.Text = ""
Label2.Text = ""
.
.
Label20.Text = ""
Label1.Tag = 1
Label2.Tag = 2
.
.
Label20.Tag = 20
End Sub

sondern eher dieses:

Sub Button1_Click
For i = 1 To 20
Label(i).Text = ""
Label(i).Tag = i
Next
End Sub

oder vielleicht so:

Sub Button1_Click
For i = 1 To 20
Label("Label" & i).Text = ""
Label("Label" & i).Tag = i
Next
End Sub

Es ist zum verzweifeln, es funktioniert überhaupt keine der beiden Varianten.
Ich hoffe es hat jemand eine Lösung für mich parat...

Beste Grüsse

Peter
 

klaus

Expert
Licensed User
Longtime User
Es gibt zwei Möglichkeiten, welche die Beste ist kommt darauf an was Du machen willst.
- Alle Views in der Activity durchlaufen.
B4X:
Dim i As Int
For i = 0 To Activity.NumberOfViews - 1
    If Activity.GetView(i) Is Label Then
        Dim lbl As Label
        lbl = Activity.GetView(i)
        lbl.Text = ""
    End If
Next
- Arrays von Views erstellen.
B4X:
Dim Label1, Label2, Label3, Label4 As Label
.
.
.
Dim Labels() As Label
Dim i As Int
Labels = Array As Label (Label1, Label2, Label3, Label4)
For i = 0 To Labels.Length - 1
    Labels(i).Text = ""
    Labels(i).Tag = i
Next
Die Tag Werte kannst Du auch im Designer definieren.

Beste Grüsse.
 

PeBo007

Member
Licensed User
Longtime User
Es gibt zwei Möglichkeiten, welche die Beste ist kommt darauf an was Du machen willst.
- Alle Views in der Activity durchlaufen.
B4X:
Dim i As Int
For i = 0 To Activity.NumberOfViews - 1
    If Activity.GetView(i) Is Label Then
        Dim lbl As Label
        lbl = Activity.GetView(i)
        lbl.Text = ""
    End If
Next
- Arrays von Views erstellen.
B4X:
Dim Label1, Label2, Label3, Label4 As Label
.
.
.
Dim Labels() As Label
Dim i As Int
Labels = Array As Label (Label1, Label2, Label3, Label4)
For i = 0 To Labels.Length - 1
    Labels(i).Text = ""
    Labels(i).Tag = i
Next
Die Tag Werte kannst Du auch im Designer definieren.

Beste Grüsse.
Vielen Dank Klaus für die schnelle Antwort

Der zweite Code-Vorschlag funktioniert absolut fehlerfrei, der erste allerdings nicht.
Denn die Abrage "If Activity.GetView(i) Is Label Then" funktioniert bei Labels nicht wirklich,
alle View's, welche eine Text-Eigenschaft haben würden = "" gesetzt werden.
Mit anderen View's dagegen funktioniert die Abfrage absolut fehlerfrei!
 
Top