Einzelnen Beitrag anzeigen

Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
416 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: TChart Achsenkreuz hervorheben;

  Alt 28. Dez 2010, 15:22
@Linkat:

Probier's mal damit:

Delphi-Quellcode:
procedure TForm1.Chart1Resize(Sender: TObject);
var
  nMinSize: integer;
begin
  // Chart neu positionieren, dabei Verhältnis fix lassen!
  nMinSize := Min(Chart1.Height, chart1.Width);
  Chart1.ChartRect := Rect( 50, 50, nMinSize - 50 , nMinSize- 50 );

  // Legende per Hand positionieren
  Chart1.Legend.Left := chart1.ChartWidth + 75;
  Chart1.Legend.Top := chart1.ChartRect.Top;
  Chart1.Legend.Height := chart1.ChartHeight;

  // Titel neu positionieren
  Chart1.Title.Left := nMinSize div 2;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  // Daten setzen
  Series1.Clear;
  for i := 1 to 100 do
    Series1.AddXY(Random(1200) - 600, Random(1200) - 600);

  
  // hier geht ich nun davon aus, daß die beiden Achen fixierte Wertebereiche von -600 bis 600 haben!


  // Eigene Chartpositionierung
  Chart1.CustomChartRect := True; // damit wird das automatische anpassen unterbunden!
  Chart1.ChartRect := Rect( 50, 50, 300, 300 );

  // Titel per Hand positioneren
  Chart1.Title.Caption := 'Streubesitz';
  Chart1.Title.Top := 20;

  // Achsen zentrieren im Ursprung (Min/Max Werte von -600 bis 600)
  Chart1.LeftAxis.PositionUnits := muPercent;
  Chart1.LeftAxis.PositionPercent := 50;

  Chart1.BottomAxis.PositionUnits := muPercent;
  Chart1.BottomAxis.PositionPercent := 50;

  // Legende
  Chart1.Legend.Left := chart1.ChartWidth + 75;
  Chart1.Legend.Top := chart1.ChartRect.Top;
  Chart1.Legend.Height := chart1.ChartHeight;
end;
Jede Größenänderung des Formulars paßt nun den Chart so an, daß das Größenverhältnis gewahrt bleibt (vor dem ersten Resize ist Legende noch falsch positioniert, hab das nur grad nicht korrigiert --> selbst schauen). Zudem sind die Achsen im Koordinatenursprung angesiedelt (können wie schon beschreiben in der Strichstärke angepaßt werden)

Grüße,
Uli
  Mit Zitat antworten Zitat