AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TChart Achsenkreuz hervorheben;

Ein Thema von Linkat · begonnen am 20. Dez 2010 · letzter Beitrag vom 30. Dez 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von ULIK
ULIK

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

AW: TChart Achsenkreuz hervorheben;

  Alt 22. Dez 2010, 15:51
Was paßt denn nicht? Bei mir hat es schon einen Effekt gehabt.

Geändert von ULIK (22. Dez 2010 um 15:53 Uhr)
  Mit Zitat antworten Zitat
Linkat

Registriert seit: 3. Dez 2004
Ort: nr Stuttgart
62 Beiträge
 
Delphi 2009 Professional
 
#2

AW: TChart Achsenkreuz hervorheben;

  Alt 23. Dez 2010, 13:16
Hallo ULIK,
wenn ich bei beiden Achsen die Automatic abschalte, und Max und Min für left und bottom gleich setze (z.B. auf -500 / 500), so wird aber immer noch beim Verändern der Form der Maßstab verzerrt. Es fehlt mir eine Eigenschaft wie stretch = false oder autosize = false. Zwar kann man über das Verhältnis Chart1.Width zu Chart1.Height einen festen Bezug zur Größe der Form herstellen, aber durch Änderungen der Achsenbeschriftung bzw. Legende wird das Verhältnis x/y wieder verändert.

Wenn ich zur Hervorhebung der x- und y-Achsen an den Ticks die Strichstärke verändere, so werden halt nur die Ticks stärker, aber nicht die Achsen durch den Nullpunkt.
Vielleicht habe ich mich in #1 nicht deutlich genug ausgedrückt. Ich meine mit Achsenkreuz durch den Nullpunkt des Koordinatensystems.

Wer hat noch einen Tipp?

Gruß, linkat
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

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

AW: TChart Achsenkreuz hervorheben;

  Alt 23. Dez 2010, 13:31
Achsenhervorhebung: Du mußt auf des Ticks-Seite die Strichstärke der Achsen ändern, nicht die der Ticks: Button 'Axis...' (siehe Bild)

Skalierung: dazu fällt mir keine Eignschaft ein. Du könntest höchstens im FormResize die Skalierung bzw. die Größen neu berechnen.


Grüße,
Uli
Angehängte Grafiken
Dateityp: png Axis.png (55,4 KB, 16x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von guinnes
guinnes

Registriert seit: 28. Feb 2007
Ort: Bottrop
265 Beiträge
 
Delphi 5 Enterprise
 
#4

AW: TChart Achsenkreuz hervorheben;

  Alt 23. Dez 2010, 14:03
so wird aber immer noch beim Verändern der Form der Maßstab verzerrt. Es fehlt mir eine Eigenschaft wie stretch = false oder autosize = false.
Stell das Alignment des Charts doch einfach auf alNone, dann ändert sich der Chart nicht, wenn sich die Größe der Form ändert. Zum Achsenkreuz : Selber zeichnen in OnBeforeDrawValues
Glückauf
  Mit Zitat antworten Zitat
Linkat

Registriert seit: 3. Dez 2004
Ort: nr Stuttgart
62 Beiträge
 
Delphi 2009 Professional
 
#5

AW: TChart Achsenkreuz hervorheben;

  Alt 23. Dez 2010, 14:55
@ULIK
ich möchte nicht die Ränder BottumAxis bzw. Left Axis, sondern das Achsenkreuz durch den Ursprung (0/0) hervorheben.

@Guinnes
Mit alNone bleibt das Vehältnis zwar gleich, aber das Chart wird nicht größer. Also auch keine vernünftige Lösung.

Vielen dank für eure Hilfe, aber ich bin wegen Weihnachtspause erstmal über 2 Wochen am Programmieren mit Delphi verhindert.

Ich wünsche allen Forum-Lesern ein frohes Weihnachtsfest und alles Gute im neuen Jahr.

Vielleicht hat der eine oder andere ja noch einen Tipp für mein Problem.

Gruß, Linkat
  Mit Zitat antworten Zitat
Benutzerbild von guinnes
guinnes

Registriert seit: 28. Feb 2007
Ort: Bottrop
265 Beiträge
 
Delphi 5 Enterprise
 
#6

AW: TChart Achsenkreuz hervorheben;

  Alt 23. Dez 2010, 15:19
@Guinnes
Mit alNone bleibt das Vehältnis zwar gleich, aber das Chart wird nicht größer. Also auch keine vernünftige Lösung.
Einen Tod wirst du sterben müßen. Bleibt noch alNone und im OnRezize des Forms den Chart mit ScaleBy anpassen
Glückauf
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#7

AW: TChart Achsenkreuz hervorheben;

  Alt 23. Dez 2010, 17:15
So schwer ist das doch nicht:
Sei pnChartContainer das Panel, in dem sich der Chart befindet. Das TChart ist mit Alignment=alNone eingestellt, das Panel jedoch mit alClient.

So, im OnResize des Panels nun noch:

Delphi-Quellcode:
Begin
  chart.Width := Min (pnChartContainer.Width, pnChartContainer.Height);
  chart.Height := chart.Width;
End;
Unjetestet.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#8

AW: TChart Achsenkreuz hervorheben;

  Alt 26. Dez 2010, 19:43
Entschuldigung Linkat habe erst eben deine private
Mail gesehen. Ich werde mir wenn es recht ist morgen das Problem
verinnerlichen
Martin MIchael
  Mit Zitat antworten Zitat
Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#9

AW: TChart Achsenkreuz hervorheben;

  Alt 26. Dez 2010, 19:57
Chart1.BottomAxis.Axis.Width := 10; ;


Sowas ?

Und was einst du mit 1:1
Martin MIchael
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

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

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
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:27 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