TBarchart in Lazarus 2.x installieren

Rund um die LCL und andere Komponenten
Antworten
harrybonn
Beiträge: 101
Registriert: Fr 7. Jan 2011, 15:18

TBarchart in Lazarus 2.x installieren

Beitrag von harrybonn »

Hallo, habe ein älteres Projekt unter Lazarus 1.26 mit der TBarchart-Komponente. Die ist ja seit 1.4 oder so nicht mehr dabei (sondern TAChart).

Nun will ich das Projekt auf Lazarus 2.x umstellen, aber die alte TBarchart-Komponente weiterverwenden.
Wie kann ich die nun unter Lazarus 2.x installieren?

TAChart scheint mir in keiner Hinsicht kompatibel zu sein mit TBarchart und ich habe keine Lust hier alles neu zu programmieren, für meine Zwecke reicht mir das TBarchart.

wp_xyz
Beiträge: 3333
Registriert: Fr 8. Apr 2011, 09:01

Re: TBarchart in Lazarus 2.x installieren

Beitrag von wp_xyz »

Zunächst musst du dir den Quellcode von TBarChart aus der Version 1.2.6 herauskopieren - es ist nur eine einzige Unit, barchart.pp im Ordner lcl der Lazarus-Installation. Du kannst für sie ein Package erzeugen und sie in die IDE installieren. Aber eine nicht mehr unterstützte Komponente würde ich in meiner täglichen Arbeit nicht mitschleppen, sondern in dem Projekt alles zur Laufzeit erledigen. Daher würde ich barchart.pp in das Projektverzeichnis kopieren und die Komponente zur Laufzeit, im OnCreate-Ereignis des Formulars, erzeugen, sowie dort auch die Properties aus der lfm-Datei übernehmen. In der lfm-Datei dann noch die BarChart-Komponente löschen, und es sollte alles funktionieren.

Ich habe das mit dem BarChart-Demo durchgespielt, das sich damals im examples-Ordner befand. - Siehe Anhang. Dieses Demo-Programm wird von der aktuellen Laz-Version klaglos akzeptiert.

Allerdings ist es auch nicht viel Arbeit, das Projekt auf das nun unterstützte und viel leistungsfähigere TAChart umzustellen. Im englischen Forum findest du hier die nötigen Schritte. Im Anhang auch das entsprechende Projekt dazu (allerdings nur für senkrechte Balken, für waagrechte Balken braucht man ein paar Änderungen, die ich jetzt zu faul bin aufzuschreiben - und es gibt auch noch ein Tutorial im wiki).
Dateianhänge
BarChart mit TAChart.zip
(2.08 KiB) 57-mal heruntergeladen
barchart_demo.zip
(74.83 KiB) 44-mal heruntergeladen

harrybonn
Beiträge: 101
Registriert: Fr 7. Jan 2011, 15:18

Re: TBarchart in Lazarus 2.x installieren

Beitrag von harrybonn »

Super, ganz herzlichen Dank. :)

Evtl. ist das ja doch nicht so kompliziert mit der Umstellung.
Jedenfalls mit vertikalen Balken funktioniert es schon.
Die Info zu den horizontalen Balken steht auch im Wiki? Habs leider nicht gefunden...


harrybonn
Beiträge: 101
Registriert: Fr 7. Jan 2011, 15:18

Re: TBarchart in Lazarus 2.x installieren

Beitrag von harrybonn »

Super, danke.

Krieg ich auch soweit hin, mit 3 Sachen bin ich nicht ganz so glücklich:

- Ein Bar hatte in Barchart noch den exakten Wert am Ende des Balkens angezeigt. Ich habe leider keine Möglichkeit gefunden, das hier entsprechend zu aktivieren.
- Wenn ich die Ausrichtung horizontal nehme, dann steht nur noch eine Beschreibung eines Balkens unten (statt alle 3 auf der linken Seite).
- Die Balken nehmen immer die ganze Breite des zur Verfügung stehenden Platzes ein. Macht man Sie schmaler, dann sind die Abstände zwischen den Balken riesig.

wp_xyz
Beiträge: 3333
Registriert: Fr 8. Apr 2011, 09:01

Re: TBarchart in Lazarus 2.x installieren

Beitrag von wp_xyz »

harrybonn hat geschrieben:- Ein Bar hatte in Barchart noch den exakten Wert am Ende des Balkens angezeigt. Ich habe leider keine Möglichkeit gefunden, das hier entsprechend zu aktivieren.
Setze BarSeries.Marks.Style auf smsValue.

harrybonn hat geschrieben:- Wenn ich die Ausrichtung horizontal nehme, dann steht nur noch eine Beschreibung eines Balkens unten (statt alle 3 auf der linken Seite).
Das ist etwas komplizierter - ich hatte gehofft, du brauchst das nicht... Egal: Das Problem ist, dass die Achse nichts davon mitkriegt, dass die Datenpunkte ihr x und y vertauscht haben. Du musst eine eigene ChartSeries für die Achsenbeschriftung erzeugen, die an die Eigenschaft Marks.Source der LeftAxis angebunden wird. Im beigefügten Beispiel zeige ich, wie man das machen könnte (es gibt natürlich noch andere Möglichkeiten): hier nehme ich eine UserDefinedChartSource, die die x/y-Werte der Series ausliest und vertauscht sowie den Datenpunkt-Text durchreicht.

harrybonn hat geschrieben:- Die Balken nehmen immer die ganze Breite des zur Verfügung stehenden Platzes ein. Macht man Sie schmaler, dann sind die Abstände zwischen den Balken riesig.
Da verstehe ich nicht, was du meinst. Die Balkenbreite wird bestimmt durch die Eigenschaft "BarWidthPercent" der BarSeries - das ist der prozentuale Abstand zum nächsten Datenpunkt. Der Default-Wert 70 sollte in den meisten Fällen ok sein. Wenn der Datenpunktabstand nicht konstant ist, variiert die Balkenbreite von Punkt zu Punkt. Wenn man "BarWidthStyle" auf bwPercentMin setzt, dann wird als Bezugswert für die Prozentrechnung der kleinste Punktabstand genommen, so dass man eine einheitliche Balkenbreite bekommt.

Falls du mehrere Balkenreihen neben- oder übereinander darstellen willst, gibt es sicher noch ein paar Fragen.
Dateianhänge
project1.lpi
(2.09 KiB) 48-mal heruntergeladen

harrybonn
Beiträge: 101
Registriert: Fr 7. Jan 2011, 15:18

Re: TBarchart in Lazarus 2.x installieren

Beitrag von harrybonn »

Super, schon mal ganz herzlichen Dank für die tolle Unterstützung.

* Das mit dem Value hat sofort funktioniert.

* Deine Datei-Anlage hier bestand leider nur aus einer .lpi - Datei (sonst weiter nichts), ich denke, da fehlt noch was.

wp_xyz
Beiträge: 3333
Registriert: Fr 8. Apr 2011, 09:01

Re: TBarchart in Lazarus 2.x installieren

Beitrag von wp_xyz »

Sorry, da habe ich mich verklickt...
Dateianhänge
barseries_horizontal.zip
(2.76 KiB) 48-mal heruntergeladen

harrybonn
Beiträge: 101
Registriert: Fr 7. Jan 2011, 15:18

Re: TBarchart in Lazarus 2.x installieren

Beitrag von harrybonn »

Danke, mit dem Projekt-Beispiel konnte ich wieder alles so herrichten, wie es zuvor mit TBarchart war...

Noch mal ganz herzlichen Dank :) :) :)

Antworten