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 VST in bestimmte Column Linie zeichnen (https://www.delphipraxis.net/135998-vst-bestimmte-column-linie-zeichnen.html)

youuu 21. Jun 2009 21:16


VST in bestimmte Column Linie zeichnen
 
Hi,

wie kann ich es realisieren, das in z.B Column 3 und 4 eine durch gezogene Linie zu sehen ist, aber nur in Row 4?

Delphi-Quellcode:
procedure TFormKunden.VstPositionenGetText(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
  var CellText: string);
Gibt es leider keine Variable für Row oder wie kann ich das realisieren?

chaosben 22. Jun 2009 05:04

Re: VST in bestimmte Column Linie zeichnen
 
Um welche Row es gerade geht, erkennst du an dem Node bzw. dem NodeData.

toms 22. Jun 2009 05:41

Re: VST in bestimmte Column Linie zeichnen
 
Sender.AbsoluteIndex(Node)

youuu 22. Jun 2009 15:44

Re: VST in bestimmte Column Linie zeichnen
 
es geht darum in Zeile 4 und spalte 3-4 eine Linie zu zeichen.

Kann mir das jemand erklären?

anse 23. Jun 2009 00:14

Re: VST in bestimmte Column Linie zeichnen
 
Das schwierige dabei ist nur, den richtigen Event zu finden.

Allerdings - in OnGetText kannst du höchstens lauter Minus-Zeichen in die Zellen schreiben. Eine grafische Linie kannst du besser in OnAfterCellPaint malen.

Delphi-Quellcode:
procedure TfrmFoobar.vstAfterCellPaint(Sender: TBaseVirtualTree;
  TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex;
  CellRect: TRect);
var
  Y: Integer;
begin
  if (Node.Index = 3) and (Column in [3, 4]) then begin
    Y := Round((CellRect.Bottom-CellRect.Top)/2);
    TargetCanvas.PenPos := Point(CellRect.Left, Y);
    TargetCanvas.LineTo(CellRect.Right, Y);
  end;
end;

anse 23. Jun 2009 00:33

Re: VST in bestimmte Column Linie zeichnen
 
> In VirtualTree wird eine Row Column genannt

Sicher, alles klar... Zeile wird Spalte genannt :) Nein, die Row ist eben Node bzw. Node.Index .


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz