German Views (Labels) in einer List

Paulsche

Well-Known Member
Licensed User
Longtime User
Views (Labels) in einer List bearbeiten

Hi, ich möchte im Programm das Ändern der Schriftfarbe von Feld-Labels und Daten-Labels per Variable ermöglichen.

Folgend würde es funktionieren, nur bräuchte ich mehrere Arrays, wo ich aber nicht weiß wie ich die zu einem Array zusammenfassen kann ohne es in einer Zeile unter bringen zu müssen.

B4X:
Dim lbl As Label
   Dim vw1(),vw2() As  View
   vw1 = Array As View(LBL00LetzteTankung,LBL00ExtTag,LBL00BeiTachostand,LBL00ExtKm,LBL00Literpreis)
   vw2 = Array As View(LBL00GefahreneTage,LBL00Tage,LBL00KMproTag,LBL00Ext2KM,LBL00ServiceTage)
   lbl = vw1(2)   ' Beispiel mit einem Label
   lbl.TextColor   = Colors.red

Array in einer Liste addieren wäre schöner, aber da bleibt Programm an roten Stelle hängen.
B4X:
Dim lst As List
   Dim lbl As Label
   lst.Initialize
   lst.Addall(Array As View(LBL00LetzteTankung,LBL00ExtTag,LBL00BeiTachostand,LBL00ExtKm,LBL00Literpreis))
   lst.Addall(Array As View(LBL00GefahreneTage,LBL00Tage,LBL00KMproTag,LBL00Ext2KM,LBL00ServiceTage))
   [COLOR="Red"]lbl = lst.Get(2)[/COLOR]   ' Beispiel mit einem Label
   lbl.TextColor   = Colors.Red

Was mache ich da falsch ?
Oder gibt es eine Möglichkeit in der Version 1 die Arrays (werden noch mehr werden) zu einem Array zu verknüpfen ?
 
Last edited:

klaus

Expert
Licensed User
Longtime User
Versuche ein mal folgenedes, Ich habe es nicht versucht.
B4X:
lst.Addall(Array As [COLOR=Red]Label[/COLOR](LBL00LetzteTankung,LBL00ExtTag,LBL00BeiTachostand,LBL00ExtKm,LBL00Literpreis))
lst.Addall(Array As [COLOR=Red]Label[/COLOR](LBL00GefahreneTage,LBL00Tage,LBL00KMproTag,LBL00Ext2KM,LBL00ServiceTage))
Beste Grüsse.
 
D

Deleted member 103

Guest
Hallo Paulsche,

ich denke so sollte es richtig sein:
B4X:
   Dim lst As List
   Dim lbl() As Label
   Dim lbl1 As Label
   lst.Initialize
   lst.Addall(Array As View(LBL00LetzteTankung,LBL00ExtTag,LBL00BeiTachostand,LBL00ExtKm,LBL00Literpreis))
   lst.Addall(Array As View(LBL00GefahreneTage,LBL00Tage,LBL00KMproTag,LBL00Ext2KM,LBL00ServiceTage))
   lbl = lst.Get(1)   ' Beispiel mit einem Label
   lbl1=lbl(2) 'LBL00KMproTag
   lbl1.TextColor   = Colors.Red

Ich habe aber selbst noch nicht probiert.

Ciao,
Filippo
 

Paulsche

Well-Known Member
Licensed User
Longtime User
hi, geht leider beides nicht, hm, denke dann geht es mit LIST nicht,
dann muss ich es irgendwie mit Arrays machen,

ODER

es gibt doch die Möglichkeit alle Views (nur Labels) in einer Schleife zu durchlaufen, aber kann man dabei die Labelnamen die z.B. mit "LBL00dat" beginnen abzufragen um die herauszufiltern ?

Hab nicht herausgefunden wie ich die Labelnamen abfragen kann.
 

klaus

Expert
Licensed User
Longtime User
Hallp Paulsche,
Folgender code funktioniert:
B4X:
Sub Globals
    Dim ll() As Label
    Dim lbl0, lbl1, lbl2, lbl3 As Label
End Sub

Sub Activity_Create(FirstTime As Boolean)
    lbl0.Initialize("lbl0")
    lbl1.Initialize("lbl1")
    lbl2.Initialize("lbl2")
    lbl3.Initialize("lbl3")
    
    ll = Array As Label(lbl0, lbl1, lbl2, lbl3)
    
    For i = 0 To ll.Length - 1
        Dim lbl As Label
        lbl.Initialize("")
        lbl = ll(i)
        Activity.AddView(lbl,10dip, 10dip + i * 60dip, 150dip, 50dip)
        lbl.Color = Colors.White
        lbl.Text = "Test " & i
        lbl.TextColor = Colors.Blue
    Next
End Sub

Sub lbl1_Click
    ll(0).TextColor = Colors.Red
    ll(2).TextColor = Colors.Red
End Sub
Beste Grüsse.
 

Paulsche

Well-Known Member
Licensed User
Longtime User
Danke Klaus,

ja, das ist ja die Version 1 von meinem Beispiel,
die for-next Schleife hatte ich halt weggelassen.
Mit Arrays funktioniert es ja, nur hab ich sehr viele Labels, so dass die
Declaration nicht in einer Zeile möglich ist,
daher muss ich dann mehrere Arrays nehmen, und dann halt für jedes eine
eigene Schleife benutzen.

Ich denke so werd ich das dann auch machen.

Danke euch für die schnellen Beispiele.
 
Last edited:

Paulsche

Well-Known Member
Licensed User
Longtime User
So hab ich es jetzt für die erste Maske gemacht und es funktioniert,
sind halt mehrere Schleifen.
Aber besser als jedes Label einzeln zu bearbeiten.

B4X:
Sub init_Design                                                   ' Schrift- und Hintergrundfarben setzen
   Dim lbl() As Label
   lbl = Array As Label(LBL00LetzteTankung,LBL00ExtTag,LBL00BeiTachostand,LBL00ExtKm,LBL00Literpreis,LBL00ExtEUR,LBL00Aktverbrauch,LBL00SchnittVerbrauch,LBL00ExtLiter100KM,LBL00Ext1Liter100KM)
   For i = 0 To lbl.Length -1
      Dim lab As Label
      lab            = lbl(i)
      lab.TextColor   = Colors.blue
   Next

   lbl   = Array As Label(LBL00GefahreneKM,LBL00Ext1KM,LBL00GefahreneTage,LBL00Tage,LBL00KMproTag,LBL00Ext2KM,LBL00ServiceKM,LBL00ServiceTage,LBL00Ext3KM,LBL00Tankvorgaenge,LBL00ExtStk,LBL00Ext1Tage,LBL00Tankart)
   For i = 0 To lbl.Length -1
      Dim lab As Label
      lab            = lbl(i)
      lab.TextColor   = Colors.blue
   Next

   lbl   = Array As Label(LBL00datLetzteTankung,LBL00datBeiTachostand,LBL00datLiterpreis,LBL00datAktVerbrauch,LBL00datSchnittVerbrauch,LBL00datGefahreneKM,LBL00datGefahreneTage,LBL00datKMproTag,LBL00datServiceTage,LBL00datServiceKM,LBL00datTankart,LBL00datTankvorgaenge)
   For i = 0 To lbl.Length -1
      Dim lab As Label
      lab            = lbl(i)
      lab.TextColor   = Colors.Green
   Next
   
End Sub
 

Paulsche

Well-Known Member
Licensed User
Longtime User
aaahh, Klaus, danke, wusste ich gar nicht :BangHead: !!!

Das hilft natürlich sehr. :icon_clap:
 
Top