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 Verlaufs Graph in VirtualStringTree Zelle Zeichnen (https://www.delphipraxis.net/67151-verlaufs-graph-virtualstringtree-zelle-zeichnen.html)

Metal_Snake2 10. Apr 2006 12:43


Verlaufs Graph in VirtualStringTree Zelle Zeichnen
 
Morgen,

weis einer villeicht wie ich einen verlaufs graph in eine Zelle zeichnen kann.
Hat jemand villeicht einen beispielcode?

Der_Unwissende 10. Apr 2006 13:10

Re: Verlaufs Graph in VirtualStringTree Zelle Zeichnen
 
HI,
kannst du noch etwas genauer sagen, was für dich ein Verlaufsgraph ist?

Und dann käme natürlich hinzu, was hast du dir denn dazu schon überlegt, wo kommst du gerade nicht weiter, etc. (um mal dezent auf die Forenregeln zu verweisen)

Gruß Der Unwissende

Metal_Snake2 10. Apr 2006 20:06

Re: Verlaufs Graph in VirtualStringTree Zelle Zeichnen
 
ja selbstverständlich habe ich mich schon damit beschäftig;-)

Momentan sieht mein ereignis so aus:

Delphi-Quellcode:
procedure TfrmMain.VstBeforeCellPaint(Sender: TBaseVirtualTree;
  TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex;
  CellRect: TRect);
var
  J,I, PercentageSize, RndPercent: integer;
  ColorStart: Word;
  Data: PTreeData;
  R,G,B: byte;
begin

  J:= 0;

  //SpeedGraph
  if (Column = 4) then
  begin

    Data := Sender.GetNodeData(Node);
    RndPercent:=99;///MEIN EINTRAG : HIER MUSS DER WERT ÜBER DIE RECORD MEM. STRUCTURE ÜBERGEBEN WERDEN

    InflateRect(CellRect, 424, 3);
    Cellrect.Left := Vst.Header.Columns.Items[4].Left;
    DrawEdge(TargetCanvas.Handle, CellRect, BF_FLAT, BF_SOFT or BF_FLAT);
    PercentageSize := (CellRect.Right - CellRect.Left) * RndPercent div 100;

    if True then
    begin

      ColorStart :=ClYellow;

      R:= GetRValue(ColorStart);
      G:= GetGValue(ColorStart);
      B:= GetBValue(ColorStart);


      for I := CellRect.Right downto CellRect.Left do
      begin
        TargetCanvas.Brush.Color := RGB(R,G,B);

        Randomize;
        J := Random(20);
        TargetCanvas.Pen.Color := ClWhite;
        TargetCanvas.MoveTo(j+i,0);
        TargetCanvas.LineTo(1,75);

        if CellRect.Right - CellRect.Left <= PercentageSize then
          TargetCanvas.FillRect(CellRect);
        Dec(CellRect.Right);

        Dec(G);

      end;
    end else
    begin
      CellRect.Right := CellRect.Left + PercentageSize;
      if RndPercent = 100 then
        TargetCanvas.Brush.Color := clRed
      else
        TargetCanvas.Brush.Color := clLime;
      TargetCanvas.FillRect(CellRect);
    end;
  end;

end;
Und das ist dan der graph:
http://img403.imageshack.us/img403/1...llgraph5eh.gif



wie man sieht wird der graph nicht richtig gezeichnet. Also der angang der Graphen wirkt "verzert".
Was man nicht sieht ist dass der Graph komischerweise irgendwie komplett durchgezeichnet wird, also ich möchte performance sparen indem der graph immmer nur so lang ist wie die Spalten breite oder cellenbreite. Ich hätte gerne eine funktion indem ich ich die graph höhe als integerwert eingebe.

Der Graph soll z.B. den Verlaus dder Cpu auslastung darstellen können.


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