Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Säulendiagramm (https://www.delphipraxis.net/117029-saeulendiagramm.html)

S20000 10. Jul 2008 09:11


Säulendiagramm
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,

ich möchte in Delphi ein Säulendiagramm darstellen und zwar
in der Form, wie es im angehängten jpg dargestellt wird.
Kann mir da jemand weiterhelfen. Ich hatte die Komponente
TChart im Auge, leider finde ich in Delphi keine Hilfe dazu.
Ansonsten hätte ich noch die SDL Component Suite installiert.

Gruß
Sebastian

RavenIV 10. Jul 2008 09:25

Re: Säulendiagramm
 
Hast Du wirklich in der Delphi-Hilfe nach TChart gesucht?
Ich bekomm da nämlich sehr wohl einen Hilfetext angezeigt.
Und das schon in D7.

S20000 10. Jul 2008 09:34

Re: Säulendiagramm
 
Also ich gehe über Hilfe-->BorlandHilfe-->Suchen nach: TChart,
und er findet nichts?!

RavenIV 10. Jul 2008 09:44

Re: Säulendiagramm
 
Dann drück mal in Delphi die <F1> oder <STRG><F1>
Oder tipp im CodeEditor TChart ein, setz den Cursor darauf und drück dann F1.

Was für eine Delphi-Version hast Du eigentlich?

S20000 10. Jul 2008 09:51

Re: Säulendiagramm
 
Klappt auch nicht, viell installiere ich Delphi mal neu.
Ich habe Delphi 2006 Developper Studio Enterprise

Gruß
Sebastian

RavenIV 10. Jul 2008 09:56

Re: Säulendiagramm
 
Zitat:

Zitat von S20000
Klappt auch nicht, viell installiere ich Delphi mal neu.
Ich habe Delphi 2006 Developper Studio Enterprise

Wenn Du meinst, dann mach das.
Und installier dann auch gleich das Windows neu :-(

Hört doch auf, immer gleich mit dem Holzhammer loszuklopfen.
Das bringt alles nix ausser Frustration.

Mach dich auf die Suche nach einem Tutorial für TChart oder TeeChart.
Bemühe hierzu google oder die Suche im Forum.

Sherlock 10. Jul 2008 09:59

Re: Säulendiagramm
 
S2000: Wird denn überhaupt etwas in der Hilfe angezeigt?
Such vielleicht mal nach Chart und nicht nach TChart... oder Diagramm. Eine Neuinstallation ist hier definitiv nicht angezeigt.

Sherlock

S20000 10. Jul 2008 10:05

Re: Säulendiagramm
 
Ja, die Hilfe zeigt etwas an. Zur TChart wird
halt nur nichts angezeigt :-(
Ich werde mal nach nem Tutorial googeln.

Gruß
Sebastian

marabu 10. Jul 2008 10:18

Re: Säulendiagramm
 
Hallo Sebastian,

wenn TChart zum Lieferumfang deiner Delphi-Version gehört, dann befindet sich auch eine Hilfedatei dazu im Unterordner HELP.
Ansonsten ist es recht einfach sich die online-Help beim Hersteller zu besorgen: klick

Freundliche Grüße

S20000 10. Jul 2008 12:52

Re: Säulendiagramm
 
Habe mir die Hilfe jetzt heruntergeladen.. weiß auch nicht
warum die nicht installiert war..

Leider ist dort mein Fall nicht beschrieben. Ich benötige
ja ein Balkendiagramm, abhängig von 3 Größen und d.h. auch
3 Achsen (XYZ).

marabu 10. Jul 2008 13:17

Re: Säulendiagramm
 
Wenn du deiner Chart-Komponente mehrere Balken-Serien hinzufügst, dann musst du deren Eigenschaft MultiBar auf mbNone setzen, damit du die gewünschte Darstellung erhältst.

Im Chart-Editor wechsle von Diagramm auf Reihen und betrachte die RadioGroup "Mehrfach-Balken".

S20000 10. Jul 2008 13:38

Re: Säulendiagramm
 
Danke, der Tip war gut!

Jetzt bleibt nur noch ein Problem. Wie kann ich jetzt die "Y-Achse"
beschriften so das ich wie auf dem Bild zu sehen 3 Beschriftungen habe.
(siehe erster Beitrag)

Gruß
Sebastian

marabu 10. Jul 2008 14:19

Re: Säulendiagramm
 
Die Y-Achse ist die am linken Rand (Chart.VertAxis). Bei dir hat sie ein Increment (Steigung) von 5 und wahrscheinlich sogar eine automatische Skalierung.

Was genau willst du verändern?

S20000 10. Jul 2008 14:27

Re: Säulendiagramm
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich habe mal ein Bild zur Verdeutlichung eingefügt.
Oben der derzeitige Zustand, unten so wie
ich es benötige. Ich brauche im Prinzip eine
zusätzliche Achseninformation.

Gruß
Sebastian

marabu 10. Jul 2008 15:07

Re: Säulendiagramm
 
Du könntest die Achsenbeschriftung für die DepthAxis auf Text umstellen und in der Methode OnGetAxisLabel den gewünschten String übergeben.

S20000 10. Jul 2008 19:31

Re: Säulendiagramm
 
Hallo,
könntest du das noch etwas konkretisieren?

Delphi-Quellcode:
chart1.DepthAxis. ? : = ?

marabu 10. Jul 2008 20:40

Re: Säulendiagramm
 
Klar.

Du setzt DepthAxis.LabelStyle auf talText und stellst einen event handler für OnGetAxisLabel bereit:

Delphi-Quellcode:
procedure TDemoForm.DemoChartGetAxisLabel(Sender: TChartAxis;
  Series: TChartSeries; ValueIndex: Integer; var LabelText: String);
begin
  if Sender = TChartAxis(DemoChart.DepthAxis) then
    case ValueIndex of
      0: LabelText := 'Serie 1';
      1: LabelText := 'Serie 2';
      2: LabelText := 'Serie 3';
    else LabelText := '???';
    end;
end;

S20000 10. Jul 2008 21:24

Re: Säulendiagramm
 
Liste der Anhänge anzeigen (Anzahl: 1)
Vielen Dank schonmal!
Habe das jetzt wie folgt programmiert:

Delphi-Quellcode:
implementation

{$R *.dfm}

procedure TForm14.Chart1GetAxisLabel(Sender: TChartAxis; Series: TChartSeries;
  ValueIndex: Integer; var LabelText: string);
begin
  if Sender = TChartAxis(Chart1.DepthAxis) then
    case ValueIndex of
      0: LabelText := 'Serie 1';
      1: LabelText := 'Serie 2';
      2: LabelText := 'Serie 3';
    else LabelText := '???';
    end;
end;

procedure TForm14.FormCreate(Sender: TObject);
begin
chart1.DepthAxis.LabelStyle:=taltext;
chart1.Series[0].Add(10,'1',clred);
chart1.Series[1].Add(20,'2',clblue);
chart1.Series[2].Add(20,'3',clgreen);

end;
Die Ausgabe sieht dann aus wie im BIld zu sehen. Also ohne
die gewünschten Beschriftungen.
Habe ich etwas vergessen?

S20000 11. Jul 2008 07:58

Re: Säulendiagramm
 
Guten Morgen,

ok es hat jetzt funktioniert. Ich hatte vergessen die
Depth Axis auf sichtbar zu schalten.

Gruß
Sebastian

marabu 11. Jul 2008 08:00

Re: Säulendiagramm
 
Moin,

du hast die Achsenbeschriftung noch nicht sichtbar gemacht:

Delphi-Quellcode:
procedure TForm14.FormCreate(Sender: TObject);
begin
  with Chart1 do
  begin
    DepthAxis.LabelStyle := talText; // besser im Chart-Editor
    DepthAxis.Visible := True;       // besser im Chart-Editor
    Series[0].Add(10, '1', clred);
    Series[1].Add(20, '2', clblue);
    Series[2].Add(20, '3', clgreen);
  end;
end;
Bei deinem Beispiel wird deutlich, dass die kleinen Werte im Hintergrund mit der orthogonalen Darstellung schlecht sichtbar sind. Im Chart-Editor kannst du auf der 3D-Seite des Diagramms diese Eigenschaft abschalten und mit den Reglern für Drehung und Erhöhung spielen.

Wenn du mal nicht weißt, wie du eine Einstellung im Chart-Editor auch in deinem Code vornehmen kannst oder wenn dich die Intuition mal verlässt: Alle Änderungen gegenüber den Standardeinstellungen werden im Object Inspector durch BoldText hervorgehoben. Zusätzlich kannst du einen charakteristischen Zahlenwert im Chart-Editor einstellen und diesen in der Textdarstellung deiner Form suchen.

Freundliche Grüße

S20000 11. Jul 2008 12:23

Re: Säulendiagramm
 
Super, das hat soweit funktioniert!

Hat schonmal jemand realisiert, den Chart zur Laufzeit zu drehen?

Gruß
Sebastian

S20000 16. Jul 2008 14:11

Re: Säulendiagramm
 
(falls das mal jemand sucht)

Ich habe die Rotation des Chart folgendermaßen gemacht:

Delphi-Quellcode:
procedure TForm14.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;
  var ScrollPos: Integer);
begin
chart1.View3DOptions.Rotation:=scrollbar1.position;
end;

procedure TForm14.ScrollBar2Scroll(Sender: TObject; ScrollCode: TScrollCode;
  var ScrollPos: Integer);
begin
chart1.View3DOptions.Elevation:=scrollbar2.Position;
end;


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