AddGadgetItem Frage

Anfängerfragen zum Programmieren mit PureBasic.
TheSaint
Beiträge: 143
Registriert: 21.12.2008 18:59

AddGadgetItem Frage

Beitrag von TheSaint »

Hallo Zusammen,

Das füllen der Überschriften eines ListIconGadget klappt.

Jedoch habe ich folgende Frage zum Füllen eines ListIconGadget,
und zwar habe ich folgenden Code:

Code: Alles auswählen

    For iSpalte = 1 To DatabaseColumns(db)
;         Debug DatabaseColumnName(db, iSpalte - 1)
        AddGadgetColumn(#Listview_0, iSpalte -1 , DatabaseColumnName(db, iSpalte - 1), 200)
    Next iSpalte

While NextDatabaseRow(db) 
   AddGadgetItem(#Listview_0, 0, GetDatabaseString(db, 0)+Chr(10)+GetDatabaseString(db, 1)) 
Wend
Wenn ich dies so erfasse, dann werden die Spalten und Zeilen richtig gefüllt.
Jedoch weis ich nicht immer wieviel Spalten vorhanden sind, wenn ich eine Datenbankabfrage erstelle.

Wie sieht der Code aus, wenn ich z. B. 10 Spalten habe und 30 Zeilen?
muss ich immer wieder ein +Chr(10)+ dazwischen setzen um die Spalten in einer Zeile zu füllen??

Hoffe ich konnte mich ein bischen verständlich ausdrücken.
Wäre toll wenn mir jemand hier helfen könnte (evtl. ein CodeBsp.?)
Hab die Hilfe durchgesehen, hier im Forum.. aber irgendwie...

Schon mal vielen Dank.

Viele Grüße
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

naja, jaa.

Falls dir das nicht gefällt, kannst du auch "blinde Einträge" anlegen und dann "per Hand" jedes einzelne Feld füllen mit:
SetGadgetItemText(#Gadget, Eintrag, Text$ [, Spalte])
da kannst du dann Zeilen und Spalten wählen.

Ansonsten für viele Spalten halt eine Schleife erstellen, welche einen String erzeugt der dann aus den GetDatabaseString und einem chr() gesteht
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
TheSaint
Beiträge: 143
Registriert: 21.12.2008 18:59

Beitrag von TheSaint »

Hallo Stargate,

vielen Dank für Deine Hilfe.
Ich habe jetzt folgenden Code geschrieben:

Code: Alles auswählen

        For iZeile = 1 To DatabaseColumns(db)
            If Zeile.s = ""
                Zeile.s = "GetDatabaseString(db, "+Str(iZeile - 1)+")+Chr(10)+"
                ElseIf Zeile <> ""
                    Zeile.s = Zeile.s + "GetDatabaseString(db, "+Str(iZeile - 1)+")+Chr(10)+"
            EndIf
        Next iZeile
        Zeile.s = Mid(Zeile.s, 1, Len(Zeile.s) - 9) ;Das letzte "+Chr(10)+" entvernen
        Debug Zeile.s 
        ;Debug GetDatabaseString(db, iSpalte - 1)
        ;AddGadgetItem(#Listview_0, 0, GetDatabaseString(db, 0)+Chr(10)+GetDatabaseString(db, 1)) 
        AddGadgetItem(#Listview_0, 0, Zeile.s) 
Aber wenn ich diesen Code ausführe, dann schreibt er mit in die Spalten:

GetDatabaseString(db, 0)+Chr(10)+GetDatabaseString(db, 1)

und nicht die Werte aus der Abfrage???

Weis nicht was ich falsch mache??

Code: Alles auswählen

AddGadgetItem(#Listview_0, 0, Zeile.s) 
Bei dieser CodeZeile komme ich nicht weiter..
könntest Du mir hier noch mal helfen? Ist die vorgehensweise den richtig? Gibt es ne bessere Lösung?

Vielen Dank schon mal für die Hilfe

Viele Grüße
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

@TheSaint:

Du musst bei unbekannter Anzahl der Datenspalten pro Datenbankzeile
ebenfalls mit einer Schleife über DatabaseColumns laufen und Deine
anzuhängende Zeile aufbauen:

Code: Alles auswählen

While NextDatabaseRow(DB)
  Zeile.s = ""
  For iSpalte = 1 To DatabaseColumns(DB)
    Zeile + GetDatabaseString(DB, iSpalte - 1)
    If iSpalte < DatabaseColumns(DB)
      Zeile + Chr(10) ; Alternativ für Chr(10) -> #LF$
    EndIf
  Next iSpalte
  AddGadgetItem(#Listview_0, -1, Zeile) 
Wend
Beachte: Wenn Du bei AddGadgetItem() als zweiten Parameter eine -1
angibst, dann wird die neue Zeile dem ListIconGadget angehängt (in
Deinem Code schreibst Du die neuen Zeile immer in die erste Zeile des
ListIconGadgets)

Grüße ... Kiffi
a²+b²=mc²
TheSaint
Beiträge: 143
Registriert: 21.12.2008 18:59

Beitrag von TheSaint »

Hallo Kiffi,

super, vielen Dank.
Ich hab da total lange rumgewerkelt.
Meine Schleife war wohl auch noch nicht so ausgereift.

Läuft spitze.

Vielen Dank und viele Grüße
Antworten