Einzelnen Beitrag anzeigen

Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
434 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: VirtualStringTree mit eingebetteten Controls in Selectio

  Alt 26. Jun 2008, 10:35
Hi,
ich bin mir jetzt nicht sicher ob ich die Frage richtig verstanden habe, aber wenn es darum geht andere Controls wie z.b. eine Progressbar im VST anzuzeigen für jede Node dann wird das ungefähr so gemacht:

Delphi-Quellcode:
type
  TNodeData = record
    Bar : TProgressBar;
    Caption : String;
    //das mit dem Record hab ich mir so angewöhnt :)
  end;
  PNodeData = ^TNodeData;

procedure Tform_Main.btn_AddItemClick(Sender: TObject);
var
  Node : PVirtualNode;
  NData : PNodeData;
begin
  Tv.BeginUpdate;

  Node:=Tv.AddChild(tv.RootNode);

  NData:=Tv.GetNodeData(Node);
  
  NData.Caption:=TimeToStr(Now);
  NData.Bar:=TProgressBar.Create(TV);
  NData.Bar.Parent:=Tv;
  Ndata.Bar.Position:=Random(Ndata.Bar.Max);

  Tv.EndUpdate;
end;

procedure Tform_Main.TVAfterCellPaint(Sender: TBaseVirtualTree;
  TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex;
  CellRect: TRect);
var
  NData : PNodeData;
begin
  if Column=1 then
  begin
    NData:=Tv.GetNodeData(Node);

    if Assigned(NData) then
    begin
      CellRect:=Tv.GetDisplayRect(Node,Column,false);
      NData.Bar.Left:=CellRect.Left;
      Ndata.Bar.Top:=CellRect.Top;
      NData.Bar.Width:=CellRect.Right-CellRect.Left;
      NData.Bar.Height:=CellRect.Bottom-CellRect.Top;
      //Ndata.Bar.PaintTo(TargetCanvas,CellRect.Left,CellRect.Top);
    end;
  end;
end;

procedure Tform_Main.TVGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
  Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);
var
  NData : PNodeData;
begin
  NData:=Tv.GetNodeData(Node);
  CellText:=NData.Caption;
end;
Viele Grüsse
s!
  Mit Zitat antworten Zitat