AGB  ·  Datenschutz  ·  Impressum  







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

VirtualStringTree Spalten und Gruppierung

Ein Thema von berndn · begonnen am 1. Dez 2008 · letzter Beitrag vom 1. Dez 2008
 
berndn

Registriert seit: 4. Nov 2008
Ort: Duisburg
18 Beiträge
 
Delphi 2007 Professional
 
#1

VirtualStringTree Spalten und Gruppierung

  Alt 1. Dez 2008, 10:31
Hallo,
da ich mich ja mit dem VirtualStringTree beschäftige ist es klar das nun die ganzen Anfänger Fragen kommen.
Ich habe jetzt hier mal den Sourcecode von einem einfachem Beispiel eingefügt sowie einen Screenshot wie es aussieht nach dem man das VirtualStringTree mit dem Button1 gefüllt hat.
Die VW Rubrik zeigt wie es schön wäre jedoch erhalte ich natürlich nicht den Markennamen da er im Abschnitt der daten nicht zugwiesen wird.
Bei Ford klappt es natürlich aber ich möchte vermeiden das in der 1. Spalte der Gruppenname pro Zeile wiederholt wird.
Ideen ?

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, VirtualTrees;

type
  TOAutos = class(TObject)
  public
    MarkenName: string;
    Modell: string;
    Farbe: string;
  end;
  TOAutoMarken = class(TOAutos)
  public
  end;

  TForm1 = class(TForm)
    vst: TVirtualStringTree;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure vstFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
    procedure vstGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
      Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);
    procedure FormCreate(Sender: TObject);
    procedure vstDblClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  daten : TOAutos;
  gruppe : TOAutoMarken;
  node: PVirtualNode;
begin
  gruppe := TOAutoMarken.Create;
  gruppe.MarkenName := 'VW';

  node:=vst.AddChild(nil, gruppe);

  daten := TOAutos.Create;
  with daten do
  begin
    // MarkenName := 'VW';
    Modell := 'Käfer';
    Farbe := 'schwarz';
  end;
  vst.AddChild(node, daten);

  daten := TOAutos.Create;
  with daten do
  begin
    // MarkenName := 'VW';
    Modell := 'Golf';
    Farbe := 'rot';
  end;
  vst.AddChild(node, daten);

  daten := TOAutos.Create;
  with daten do
  begin
    // MarkenName := 'VW';
    Modell := 'Polo';
    Farbe := 'grün';
  end;
  vst.AddChild(node, daten);

  gruppe := TOAutoMarken.Create;
  gruppe.MarkenName := 'Ford';

  node:=vst.AddChild(nil, gruppe);

  daten := TOAutos.Create;
  with daten do
  begin
    MarkenName := 'Ford';
    Modell := 'Cabri';
    Farbe := 'orange';
  end;
  vst.AddChild(node, daten);

  daten := TOAutos.Create;
  with daten do
  begin
    MarkenName := 'Ford';
    Modell := 'Taunus';
    Farbe := 'grau';
  end;
  vst.AddChild(node, daten);

  daten := TOAutos.Create;
  with daten do
  begin
    MarkenName := 'Ford';
    Modell := 'Fiesta';
    Farbe := 'pink';
  end;
  vst.AddChild(node, daten);


end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  vst.NodeDataSize:=sizeof(TOAutos);
end;

procedure TForm1.vstDblClick(Sender: TObject);
var
  FocusedNode : PVirtualNode;
  daten : TOAutos;
begin
  FocusedNode := vst.FocusedNode;
  if FocusedNode <> nil then
  begin
    daten := TOAutos(vst.GetNodeData(FocusedNode)^);
    if daten.Modell<> 'then
    begin
      showmessage('Sie haben die Marke: ' + daten.MarkenName +
                  ' Modell: ' + daten.Modell +
                  ' mit der Farbe ' + daten.Farbe +
                  ' gewählt.');
    end;
  end
  else
  begin
    ShowMessage('Bitte vorher einen Eintrag auswählen.');
  end;
end;

procedure TForm1.vstFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
var
  daten : TOAutos;
begin
  daten:=TOAutos(vst.GetNodeData(node)^);
  daten.free;
end;

procedure TForm1.vstGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
  Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);
var
  daten: TOAutos;
begin
  daten := TOAutos(vst.GetNodeData(node)^);
  case Column of
    0: celltext:=daten.MarkenName;
    1: celltext:=daten.Modell;
    2: celltext:=daten.Farbe;
  end;

end;

end.
Angehängte Grafiken
Dateityp: jpg classwithoutmarkenname_907.jpg (45,9 KB, 85x aufgerufen)
  Mit Zitat antworten Zitat
 


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 14:00 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