Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi VirtualStringTree mit eingebetteten Controls in Selection? (https://www.delphipraxis.net/116280-virtualstringtree-mit-eingebetteten-controls-selection.html)

sh17 26. Jun 2008 10:07


VirtualStringTree mit eingebetteten Controls in Selection?
 
Hallo,

gibt es irgend einen Ansatz, die Komponente VirtualStringTree/VirtualDrawTree (oder überhaupt Listcontrols) dahingehend zu erweitern, das die aktuell ausgewählte Zeile um andere Controls erweitert wird? z.B. um Buttons oder Labels.

In WPF klappt das ja super einfach. Nur mit Win32 muss man wahrscheinlich einmal zum Mond und zurück.

Sven

stOrM 26. Jun 2008 10:35

Re: VirtualStringTree mit eingebetteten Controls in Selectio
 
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!

sh17 26. Jun 2008 11:15

Re: VirtualStringTree mit eingebetteten Controls in Selectio
 
genau das meine ich, danke.

Ich probiers aus.

Sven


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