TreeView zur Laufzeit füllen?

Rund um die LCL und andere Komponenten
Antworten
Lion
Beiträge: 207
Registriert: Mo 24. Mär 2014, 09:58

TreeView zur Laufzeit füllen?

Beitrag von Lion »

Moin,

ich habe vor ein TreeView zur Laufzeit mit Daten zu füllen. Nun kenne ich die TreeView Komponente überhaupt nicht, und da ich dazu kaum gute Manuals finde (Die sind entweder voll komplex, oder so einfach, dass das nicht weiter bringt), möchte ich fragen, ob jemand ein Paar Musterbeispiele für mich hat. Die Struktur sieht ungefähr so aus.
Kategorie 1
|__ Eintrag 1
|__ Eintrag 2
....
Kategorie 2
|__ Eintrag 3
|__ Eintrag 4
....
usw.
Die Daten werden aus einer DB geholt, deswegen muss das ganze variabel gelöst werden. ))

Danke!

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2905
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: TreeView zur Laufzeit füllen?

Beitrag von m.fuchs »

Ein simples Beispiel. Bau dir ein Form mit einem TreeView und einem Button. Baue in das OnClick des Buttons folgendes ein:

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var
  x, y: Integer;
  ActualParent: TTreeNode;
begin
  for y := 1 to 3 do begin
    ActualParent := TreeView1.Items.Add(nil, 'Parent' + IntToStr(y));
    for x := 1 to 10 do begin
      TreeView1.Items.AddChild(ActualParent, 'Child' + IntToStr(y) + '.' + IntToStr(x));
    end;
  end;
end;
Sollte eigentlich selbsterklärend sein.
0118999881999119725-3

Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Linkat
Lazarusforum e. V.
Beiträge: 582
Registriert: So 10. Sep 2006, 23:24
OS, Lazarus, FPC: Linux Mint 22.1; Lazarus 4.2 FPC 3.2.2; RaspiOS
CPU-Target: AMD 64, ARM 64
Wohnort: nr Stuttgart

Re: TreeView zur Laufzeit füllen?

Beitrag von Linkat »

Hast du dir das Beispiel unter

Code: Alles auswählen

C:\lazarus\examples\treeview
schon angeschaut?
Linux Mint 22.1; Lazarus 4.2 FPC 3.2.2; RaspiOS

Lion
Beiträge: 207
Registriert: Mo 24. Mär 2014, 09:58

Re: TreeView zur Laufzeit füllen?

Beitrag von Lion »

Ich danke allen!!!

Gib's da auch eine Möglichkeit jedem Kind eine ID zu verpassen?

Habe diese Funktion gefunden, habe aber vergessen wie es mit den Pointern noch mal ist... wie kann ich in Data die ID der Datenzeile aus DB einfügen?

Code: Alles auswählen

 
function AddChildObject(ParentNode: TTreeNode; S: String; Data: Pointer): TTreeNode;
 

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2905
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: TreeView zur Laufzeit füllen?

Beitrag von m.fuchs »

Würde ich anders machen. Zieh dir doch die Daten aus der Datenbank als Objekte und pack sie in eine Liste. Dann lässt du den Pointer der Node direkt auf das entsprechende Objekt verweisen.
0118999881999119725-3

Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Antworten