AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Treeviewknoten mit Listviewinhalt verknüpfen

Ein Thema von Luckie · begonnen am 10. Aug 2002 · letzter Beitrag vom 10. Aug 2002
Antwort Antwort
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Treeviewknoten mit Listviewinhalt verknüpfen

  Alt 10. Aug 2002, 06:35
Hallo.

Ich schreibe gerade eine Terminverwaltung. Diese ist wie folgt aufgebaut:
In einem Treeview stehen die Terminkategorien (privat, geschäftlich, usw.) und in einem Listview werden die in dieser Kategorie vorhandenen Termine angezeigt. So soll es mal aussehen. Nur habe ich jetzt das Problem, wie bekomme ich es hin, dass er mir auch nur die Termine anzeigt, die zu dieser Kategorie gehören. Ich muß also einen Knoten des Treeviews mit dem Inhalt eines Listviews verknüpfen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#2
  Alt 10. Aug 2002, 07:45
Hi Luckie.

Du könntest einen Blick in den Quellcode meines YAAM werfen (s. OpenSource). Da habe ich das gemacht, um im TreeView sowohl die Registry-Autostarts als auch die NT-Dienste anzuzeigen. Die Lösung ist jedenfalls die "Data"-Membervariable:
Code:
[b]type[/b]
  PTreeViewObj = ^TTreeViewObj;
  TTreeViewObj =
    [b]packed[/b] [b]record[/b]
      Termin : [b]string[/b];
    [b]end[/b];

[color=#000080][i]{ ... }[/i][/color]

[b]var[/b]
  p : TreeViewObj;
  tn : TTreeNode;

[color=#000080][i]{ ... }[/i][/color]

p^.Termin := 'Blumen kaufen, & Pauschalentschuldigung aussprechen';
tn       := TreeView.Items.AddObject([b]nil[/b],'Heute',p);
Und die Anzeige habe ich bei YAAM im "OnChange"-Event des TreeViews gemacht:
Code:
[b]var[/b]
  li : TListItem;

[color=#000080][i]{ ... }[/i][/color]

[b]with[/b] ListView1,Items [b]do[/b]
  [b]begin[/b]
    BeginUpdate;
    Clear;

    [b]if[/b](Node.Data <> [b]nil[/b]) [b]then[/b]
      [b]begin[/b]
        li := Add;
        li.Caption := PTreeViewObj(Node.Data)^.Termin;
      [b]end[/b];

    EndUpdate;
  [b]end[/b];
Da ich aber auch mehrere Einträge anzeigen lassen wollte/musste, habe ich in das o.g. Objekt zwei Knoten eingefügt, um mich quasi durch die Kette zu hangeln:
Code:
[b]type[/b]
  PTreeViewObj = ^TTreeViewObj;
  TTreeViewObj =
    [b]packed[/b] [b]record[/b]
      [color=#000080][i]{ ... }[/i][/color]
      left,
      right : PTreeViewObj;
    [b]end[/b];
Das heißt, du könntest einen Eintrag auslesen, dann setzt du den Pointer auf den Wert von rechts, liest den nächsten Eintrag ... und wiederholst das solange, bis "right" nil ist.

Wie gesagt: in dem Autostartmanager findest du ein ausführliches Beispiel dafür. Auch, wie man diese Kette aufbaut und beim Beenden des Programms korrekt freigibt, damit keine Reste bleiben.

Gruß,
Mathias.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz