Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi VirtualStringTree (einen Knoten Name vergeben) (https://www.delphipraxis.net/63070-virtualstringtree-einen-knoten-name-vergeben.html)

Karstadt 13. Feb 2006 17:50


VirtualStringTree (einen Knoten Name vergeben)
 
Hallo. Ich wollte diesen Beispiel Folgen und Knoten mit Caption anlegen, leider sehe ich nur "NODE" und keine Caption.
Warum?

http://www.dsdt.info/tutorials/virtualtreeview/?page=3

Delphi-Quellcode:

unit Unit1;

interface

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

type

  PTreeData = ^TTreeData;
  TTreeData = record
    FCaption: String;
    FColumn1: String;
end;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Vst: TVirtualStringTree;
    SpeedButton1: TSpeedButton;

    procedure Button1Click(Sender: TObject);
  private
    function AddVSTStructure(AVST: TCustomVirtualStringTree;
      ANode: PVirtualNode; ARecord: TTreeData): PVirtualNode;
    procedure Button3Click(Sender: TObject);
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
  TreeData: TTreeData;
begin
  VST.NodeDataSize:=SizeOf(TTreeData);
  VST.BeginUpdate;
  for I:=0 to 100 do
  begin
    TreeData.FCaption:='Node-Nummer: '+IntToStr(I);
    AddVSTStructure(VST,nil,TreeData);
  end;
  VST.EndUpdate;
end;

function TForm1.AddVSTStructure(AVST: TCustomVirtualStringTree; ANode: PVirtualNode;
  ARecord: TTreeData): PVirtualNode;
var
  Data: PTreeData;
begin
  Result:=AVST.AddChild(ANode);
  Data:=AVST.GetNodeData(Result);
  Avst.ValidateNode(Result, False);
  Data^.FCaption:=ARecord.FCaption;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
end;

end.

dahead 13. Feb 2006 17:53

Re: VirtualPreeView (einen Knoten Name vergeben)
 
In deinem Titel ist ein P zuviel, und ein T zu wenig.

Zum Thema: NODE ist der Standardtext. Du musst das Ereignis OnGetText verwenden und dort je nach Spalte den Text setzen.

Delphi-Quellcode:

type
  PNodeID = ^TNodeID;
  TNodeID = record
   fObject: TObject;
  end;

procedure TMainForm.VSTObjectsGetText(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
  var CellText: WideString);
var
  p: PNodeID;
begin
  p := Sender.GetNodeData(Node);
  if p <> nil then
    begin
      case Column of
        0: CellText := TScanObjectList(p.fObject).Caption;
        1: CellText := TScanObjectList(p.fObject).ItemCountStr;
      end;
    end;
end;
Edit: kleines Beispiel angehängt.
Edit2: end; vergessen.

Karstadt 13. Feb 2006 18:43

Re: VirtualPreeView (einen Knoten Name vergeben)
 
In deinem Titel ist ein P zuviel, und ein T zu wenig.

Wie meinst du das? :(

Karstadt 13. Feb 2006 18:49

Re: VirtualPreeView (einen Knoten Name vergeben)
 
Zitat:

0: CellText := TScanObjectList(p.fObject).Caption;
Undefinierter Bezeichner: 'TScanObjectList'

:(

dahead 13. Feb 2006 18:51

Re: VirtualPreeView (einen Knoten Name vergeben)
 
Zitat:

Zitat von Karstadt
In deinem Titel ist ein P zuviel, und ein T zu wenig.

Wie meinst du das? :(

dass die komponente mike lischke VirtualTreeView (bzw. VirtualStringTree) heisst, nicht VirtualPreeView. das war ja nur eine anmerkung (falls in zukunft jmd. das selbe problem haben sollte, wird er mit solch einem titel nicht fündig, daher halte ich die korrektur für sinnvoll).

hast du dein problem gelöst?

dahead 13. Feb 2006 18:53

Re: VirtualPreeView (einen Knoten Name vergeben)
 
Zitat:

Zitat von Karstadt
Zitat:

0: CellText := TScanObjectList(p.fObject).Caption;
Undefinierter Bezeichner: 'TScanObjectList'

:(

das ist klar, das ist ein objekt von mir, der code oben soll dir ja nur zeigen, wie man den Zellen-Text (CellText) zuweist. Ich verwende wie gesagt u. a. ein Objekt namens TScanObjectList dazu, für dich ist das irrelevant.

edit: kuck dir doch mal die demos im ordner advanced an, die sind sehr hilfreich für den einstieg, bzw. das hier.

Karstadt 13. Feb 2006 19:11

Re: VirtualStringTree (einen Knoten Name vergeben)
 
Das habe ich auch gemacht. Das CODE aus dem ersten Postig wurde da raus kopiert. Funktioniert bei mir nicht. ich weis aber nicht warum

Karstadt 13. Feb 2006 19:29

Re: VirtualStringTree (einen Knoten Name vergeben)
 
Alles klar. Nun habe ich das. Ist enwas ungewöhnlich zu bedienen. Sonst gut.

Karstadt 13. Feb 2006 20:35

Re: VirtualStringTree (einen Knoten Name vergeben)
 
Delphi-Quellcode:

procedure TForm1.VstGetText(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
  var CellText: WideString);
var
  Data: PTreeData;
begin
  Data:=VST.GetNodeData(Node);
  CellText := Data^.FCaption;
end;


procedure TForm1.VstFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
var
  Data: PTreeData;
begin
  Data:=VST.GetNodeData(Node);
  if Assigned(Data) then
    Data.FCaption:='';
end;
Hallo. Ich bin nun soweit, das ich ein Hauptknoten anlegen kann. Jetzt will ich einen Unterknoten enlegen. Ich habe mir zwar den Tutorial angeschaut, leider bin ich nicht viel schlauer geworden.


Mein stand:
Hardware
Software
Autos

Ziel

Hardware->Monitor
Software
Autos->Porsche

Wie kann ich eine unterkategorier ertellen ?

Karstadt 13. Feb 2006 21:31

Re: VirtualStringTree (einen Knoten Name vergeben)
 
:wall: ich habe es geschaft. :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:45 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