Einzelnen Beitrag anzeigen

Metal_Snake2

Registriert seit: 19. Nov 2004
134 Beiträge
 
Delphi 7 Personal
 
#3

Re: Verlaufs Graph in VirtualStringTree Zelle Zeichnen

  Alt 10. Apr 2006, 20:06
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.
  Mit Zitat antworten Zitat