German Labels per Code generiert, wie mit Text füllen

pjo12345

Active Member
Licensed User
Longtime User
Hallo,

ich habe mit folgendem Code mehrere Labels generiert.
B4X:
For TT=0 To 420 Step 105
   For L=10 To 412 Step 67
      For T=1+TT To 90+TT Step 18
         Dim lbl As Label         
         lbl.Initialize("lbl")
         lbl.Color=Colors.Green
         lbl.TextColor=Colors.Black
         lbl.TextSize=11
         lbl.Text = L & "." & T
         Panel1.AddView(lbl,L,T,60,19)
      Next
   Next
Next

Nun möchte ich aber jedes Label individuell mit Text versehen. Aber wie kann ich die erstellten Labels jetzt einzeln ansprechen?

mg pjo12345
 

manios

Active Member
Licensed User
Longtime User
Um die Label direkt ansprechen zu können kann man folgendes machen:

B4X:
Dim lbl(n) as Label
dim ctr as int
ctr = 0
' n ist Anzahl der Label die du brauchst

' dann die innere Schleife

     For T=1+TT To 90+TT Step 18            
         ' Dim lbl As Label                       
          ctr=ctr+1
          lbl(ctr).Initialize("lbl")            
          lbl(ctr).Color=Colors.Green
          lbl(ctr).TextColor=Colors.Black
          lbl(ctr).TextSize=11
          lbl(ctr).Text = L & "." & T
          lbl(ctr).tag = ctr         ' um den Label im Event "lbl" zu identifizieren
          Panel1.AddView(lbl(ctr),L,T,60,19)
     Next
 
Last edited:

pjo12345

Active Member
Licensed User
Longtime User
So hatte ich mir das auch gedacht aber ich bekomme eine Fehlermeldung. Der Compiler läuft ohne Meldung durch aber im Emulator bekomme ich dann: java.lang.RuntimeException: Object should first be initialized (Label).
 

manios

Active Member
Licensed User
Longtime User
Aber in der Zeile
Dim lbl(n) as Label
steht auch eine Zahl drin?

Und setze die Zeile in Sub Globals
 
Last edited:

pjo12345

Active Member
Licensed User
Longtime User
Ja.

B4X:
Sub Activity_Create(FirstTime As Boolean)

   Dim lbl(175) As Label
   Dim i As Int
   i=1
   For TT=0 To 420 Step 105
      For L=9 To 411 Step 67
         For T=TT To 89+TT Step 18
                     
            lbl(i).Initialize("lbl")
            lbl(i).Color=Colors.Green
            lbl(i).TextColor=Colors.Black
            lbl(i).TextSize=11
            lbl(i).Text= i
            i=i+1
            Panel1.AddView(lbl(i),L,T,60,19)
         Next
      Next
   Next
End Sub
 

manios

Active Member
Licensed User
Longtime User
OK, ich habe in meinen Sourcecode geschaut, da war doch noch eine kleiner Trick. Das Testprogramm funktioniert nun!
 

Attachments

  • TLabel.zip
    6.1 KB · Views: 247

pjo12345

Active Member
Licensed User
Longtime User
OK, Danke. Das funktioniert.
Kannst du mir noch sagen was das bedeutet?

Type newLabel (lab As Label)
Dim lbl(180) As newLabel
 

manios

Active Member
Licensed User
Longtime User
OK, Danke. Das funktioniert.
Kannst du mir noch sagen was das bedeutet?

Type newLabel (lab As Label)
Dim lbl(180) As newLabel

Ist so eine Art "Benutzerdefinerter View"
Man kann damit z.B. mehrere Views zusammenfassen. Beispiel:

B4X:
Type newview(lab as Label, edt as Edittext)
'Das wäre ein Label & ein Edittext.
Damit lassen sich leichter komplexe Formulare dynamisch erstellen.
 
Top