diff --git a/.gitattributes b/.gitattributes
index 614cb21fe9..6c2d5f2d69 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -4393,6 +4393,7 @@ components/tachart/icons/tdbchartsource.png -text svneol=unset#images/png
components/tachart/icons/tintervalchartsource.png -text svneol=unset#images/png
components/tachart/icons/tlistchartsource.png -text svneol=unset#images/png
components/tachart/icons/trandomchartsource.png -text svneol=unset#images/png
+components/tachart/icons/tseriespointerstylecombobox.png -text
components/tachart/icons/tuserdefinedchartsource.png -text svneol=unset#images/png
components/tachart/languages/tachartstrconsts.de.po svneol=native#text/plain
components/tachart/languages/tachartstrconsts.fi.po svneol=native#text/plain
@@ -4413,6 +4414,7 @@ components/tachart/tachartaxis.pas svneol=native#text/pascal
components/tachart/tachartaxisutils.pas svneol=native#text/pascal
components/tachart/tachartbgra.lpk svneol=native#text/pascal
components/tachart/tachartbgra.pas svneol=native#text/pascal
+components/tachart/tachartcombos.pas svneol=native#text/plain
components/tachart/tachartextentlink.pas svneol=native#text/pascal
components/tachart/tachartfpvectorial.lpk svneol=native#text/plain
components/tachart/tachartfpvectorial.pas svneol=native#text/pascal
diff --git a/components/tachart/icons/tseriespointerstylecombobox.png b/components/tachart/icons/tseriespointerstylecombobox.png
new file mode 100644
index 0000000000..89ce8c2965
Binary files /dev/null and b/components/tachart/icons/tseriespointerstylecombobox.png differ
diff --git a/components/tachart/languages/tachartstrconsts.de.po b/components/tachart/languages/tachartstrconsts.de.po
index 31a02f3e45..32098a8f96 100644
--- a/components/tachart/languages/tachartstrconsts.de.po
+++ b/components/tachart/languages/tachartstrconsts.de.po
@@ -65,6 +65,10 @@ msgstr "B-Spline"
msgid "Bubble series"
msgstr "Blasen-Diagramm"
+#: tachartstrconsts.rscirclesymbol
+msgid "Circle"
+msgstr "Kreis"
+
#: tachartstrconsts.rscolormapseries
msgid "Color map series"
msgstr "Farbkarten-Plot"
@@ -73,6 +77,10 @@ msgstr "Farbkarten-Plot"
msgid "Constant line"
msgstr "Konstante Linie"
+#: tachartstrconsts.rscrosssymbol
+msgid "Plus"
+msgstr "Plus"
+
#: tachartstrconsts.rscubicsplineseries
msgid "Cubic spline series"
msgstr "Kubischer Spline"
@@ -101,31 +109,55 @@ msgstr "Datenpunkt-Hinweis"
msgid "Delete"
msgstr "Entf."
+#: tachartstrconsts.rsdiagcrosssymbol
+msgid "Cross"
+msgstr "Kreuz"
+
+#: tachartstrconsts.rsdiamondsymbol
+msgid "Diamond"
+msgstr "Diamant"
+
#: tachartstrconsts.rsdistancemeasurement
msgid "Distance measurement"
msgstr "Distanzmessung"
+#: tachartstrconsts.rsdowntrianglesymbol
+msgid "Down triangle"
+msgstr "Dreieck abwärts"
+
#: tachartstrconsts.rsfieldseries
msgid "Vector field series"
msgstr "Vektorfeld-Diagramm"
+#: tachartstrconsts.rsfullstarsymbol
+msgid "Star (full)"
+msgstr "Stern (voll)"
+
#: tachartstrconsts.rsfunctionseries
msgid "Function series"
msgstr "Funktions-Diagramm"
+#: tachartstrconsts.rshexagonsymbol
+msgid "Hexagon"
+msgstr "Sechseck"
+
#: tachartstrconsts.rshidden
-#, fuzzy
-#| msgid "Hidden"
msgid "hidden"
msgstr "unsichtbar"
+#: tachartstrconsts.rshighbracketsymbol
+msgid "High bracket"
+msgstr "Klammer oben"
+
+#: tachartstrconsts.rshorbarsymbol
+msgid "Horizontal bar"
+msgstr "Waagrechter Strich"
+
#: tachartstrconsts.rsinvalidlogbase
msgid "Logarithm base must be > 0 and <> 1."
msgstr "Die Logarithmus-Basis muss größer als 0 und darf nicht gleich 1 sein."
#: tachartstrconsts.rsinverted
-#, fuzzy
-#| msgid "Inverted"
msgid "inverted"
msgstr "invertiert"
@@ -137,6 +169,14 @@ msgstr "Fit"
msgid "Left"
msgstr "Links"
+#: tachartstrconsts.rsleftbracketsymbol
+msgid "Left bracket"
+msgstr "Klammer links"
+
+#: tachartstrconsts.rslefttrianglesymbol
+msgid "Left triangle"
+msgstr "Dreieck nach links"
+
#: tachartstrconsts.rslinear
msgid "Linear"
msgstr "Linear"
@@ -149,6 +189,10 @@ msgstr "Linien-Diagramm"
msgid "Logarithmic"
msgstr "Logarithmisch"
+#: tachartstrconsts.rslowbracketsymbol
+msgid "Low bracket"
+msgstr "Klammer unten"
+
#: tachartstrconsts.rsmanhattanplotseries
msgid "Manhattan plot series"
msgstr "Manhatten-Plot"
@@ -161,6 +205,10 @@ msgstr "Ab"
msgid "Up"
msgstr "Auf"
+#: tachartstrconsts.rsnosymbol
+msgid "(none)"
+msgstr "(nichts)"
+
#: tachartstrconsts.rsopenhighlowcloseseries
msgid "Open-high-low-close series"
msgstr "Öffnung-Höchst-Tiefst-Geschlossen"
@@ -185,18 +233,46 @@ msgstr "Parametrische Kurve"
msgid "Pie series"
msgstr "Torten-Diagramm"
+#: tachartstrconsts.rspointsymbol
+msgid "Point"
+msgstr "Punkt"
+
#: tachartstrconsts.rspolarseries
msgid "Polar series"
msgstr "Polar-Diagramm"
+#: tachartstrconsts.rsrectanglesymbol
+msgid "Rectangle"
+msgstr "Rechteck"
+
#: tachartstrconsts.rsright
msgid "Right"
msgstr "Rechts"
+#: tachartstrconsts.rsrightbracketsymbol
+msgid "Right bracket"
+msgstr "Klammer rechts"
+
+#: tachartstrconsts.rsrighttrianglesymbol
+msgid "Right triangle"
+msgstr "Dreieck nach rechs"
+
+#: tachartstrconsts.rsstarsymbol
+msgid "Star (lines)"
+msgstr "Stern (Linien)"
+
#: tachartstrconsts.rstop
msgid "Top"
msgstr "Oben"
+#: tachartstrconsts.rstrianglesymbol
+msgid "Triangle"
+msgstr "Dreieck"
+
+#: tachartstrconsts.rsunknownstyle
+msgid "Unknown Style %s"
+msgstr "Unbekanntes Symbol %s"
+
#: tachartstrconsts.rsuserdefined
msgctxt "tachartstrconsts.rsuserdefined"
msgid "User-defined"
@@ -211,6 +287,10 @@ msgstr "Benutzerdefiniert"
msgid "User-drawn series"
msgstr "Benutzer-definiertes Diagramm"
+#: tachartstrconsts.rsvertbarsymbol
+msgid "Vertical bar"
+msgstr "Senkrechter Strich"
+
#: tachartstrconsts.rszoombyclick
msgid "Zoom by click"
msgstr "Zoomen durch Klicken"
@@ -238,4 +318,3 @@ msgstr "Fehler beim Umbenennen von Komponenten: %s"
#: tachartstrconsts.tastoolseditortitle
msgid "Edit tools"
msgstr "Werkzeuge bearbeiten"
-
diff --git a/components/tachart/languages/tachartstrconsts.fi.po b/components/tachart/languages/tachartstrconsts.fi.po
index 8ad55f242e..5dc3ec2e4c 100644
--- a/components/tachart/languages/tachartstrconsts.fi.po
+++ b/components/tachart/languages/tachartstrconsts.fi.po
@@ -53,6 +53,10 @@ msgstr "B-käyrä kuvaaja"
msgid "Bubble series"
msgstr "Kuplakuvaaja"
+#: tachartstrconsts.rscirclesymbol
+msgid "Circle"
+msgstr ""
+
#: tachartstrconsts.rscolormapseries
msgid "Color map series"
msgstr "Värikarttakuvaaja"
@@ -61,6 +65,10 @@ msgstr "Värikarttakuvaaja"
msgid "Constant line"
msgstr "Kiinteä viiva"
+#: tachartstrconsts.rscrosssymbol
+msgid "Plus"
+msgstr ""
+
#: tachartstrconsts.rscubicsplineseries
msgid "Cubic spline series"
msgstr "Kuutiokäyräkuvaaja"
@@ -89,22 +97,50 @@ msgstr "Datapisteen vihje"
msgid "Delete"
msgstr "Poista"
+#: tachartstrconsts.rsdiagcrosssymbol
+msgid "Cross"
+msgstr ""
+
+#: tachartstrconsts.rsdiamondsymbol
+msgid "Diamond"
+msgstr ""
+
#: tachartstrconsts.rsdistancemeasurement
msgid "Distance measurement"
msgstr "Etäisyysmittaus"
+#: tachartstrconsts.rsdowntrianglesymbol
+msgid "Down triangle"
+msgstr ""
+
#: tachartstrconsts.rsfieldseries
msgid "Vector field series"
msgstr ""
+#: tachartstrconsts.rsfullstarsymbol
+msgid "Star (full)"
+msgstr ""
+
#: tachartstrconsts.rsfunctionseries
msgid "Function series"
msgstr "Funktiokuvaaja"
+#: tachartstrconsts.rshexagonsymbol
+msgid "Hexagon"
+msgstr ""
+
#: tachartstrconsts.rshidden
msgid "hidden"
msgstr ""
+#: tachartstrconsts.rshighbracketsymbol
+msgid "High bracket"
+msgstr ""
+
+#: tachartstrconsts.rshorbarsymbol
+msgid "Horizontal bar"
+msgstr ""
+
#: tachartstrconsts.rsinvalidlogbase
msgid "Logarithm base must be > 0 and <> 1."
msgstr ""
@@ -121,6 +157,14 @@ msgstr "Pienimpään neliösummaan sopiva kuvaaja"
msgid "Left"
msgstr ""
+#: tachartstrconsts.rsleftbracketsymbol
+msgid "Left bracket"
+msgstr ""
+
+#: tachartstrconsts.rslefttrianglesymbol
+msgid "Left triangle"
+msgstr ""
+
#: tachartstrconsts.rslinear
msgid "Linear"
msgstr "Lineaarinen"
@@ -133,6 +177,10 @@ msgstr "Viivakuvaaja"
msgid "Logarithmic"
msgstr "Logaritminen"
+#: tachartstrconsts.rslowbracketsymbol
+msgid "Low bracket"
+msgstr ""
+
#: tachartstrconsts.rsmanhattanplotseries
msgid "Manhattan plot series"
msgstr "Manhattan-kuvaaja"
@@ -145,6 +193,10 @@ msgstr "Alas"
msgid "Up"
msgstr "Ylös"
+#: tachartstrconsts.rsnosymbol
+msgid "(none)"
+msgstr ""
+
#: tachartstrconsts.rsopenhighlowcloseseries
msgid "Open-high-low-close series"
msgstr ""
@@ -169,18 +221,46 @@ msgstr ""
msgid "Pie series"
msgstr "Piirakkakuvaaja"
+#: tachartstrconsts.rspointsymbol
+msgid "Point"
+msgstr ""
+
#: tachartstrconsts.rspolarseries
msgid "Polar series"
msgstr "Napakuvaaja"
+#: tachartstrconsts.rsrectanglesymbol
+msgid "Rectangle"
+msgstr ""
+
#: tachartstrconsts.rsright
msgid "Right"
msgstr ""
+#: tachartstrconsts.rsrightbracketsymbol
+msgid "Right bracket"
+msgstr ""
+
+#: tachartstrconsts.rsrighttrianglesymbol
+msgid "Right triangle"
+msgstr ""
+
+#: tachartstrconsts.rsstarsymbol
+msgid "Star (lines)"
+msgstr ""
+
#: tachartstrconsts.rstop
msgid "Top"
msgstr ""
+#: tachartstrconsts.rstrianglesymbol
+msgid "Triangle"
+msgstr ""
+
+#: tachartstrconsts.rsunknownstyle
+msgid "Unknown Style %s"
+msgstr ""
+
#: tachartstrconsts.rsuserdefined
msgctxt "tachartstrconsts.rsuserdefined"
msgid "User-defined"
@@ -196,6 +276,10 @@ msgstr "Käyttäjän määrittelemä"
msgid "User-drawn series"
msgstr "Käyttäjän piirtämä kuvaaja"
+#: tachartstrconsts.rsvertbarsymbol
+msgid "Vertical bar"
+msgstr ""
+
#: tachartstrconsts.rszoombyclick
msgid "Zoom by click"
msgstr "Zoomaus klikkaamalla"
diff --git a/components/tachart/languages/tachartstrconsts.fr.po b/components/tachart/languages/tachartstrconsts.fr.po
index 0b14f73828..f6a7b1dd6d 100644
--- a/components/tachart/languages/tachartstrconsts.fr.po
+++ b/components/tachart/languages/tachartstrconsts.fr.po
@@ -63,6 +63,10 @@ msgstr "Séries de B-Splines"
msgid "Bubble series"
msgstr "Séries de bulles"
+#: tachartstrconsts.rscirclesymbol
+msgid "Circle"
+msgstr ""
+
#: tachartstrconsts.rscolormapseries
msgid "Color map series"
msgstr "Séries de cartes de couleur"
@@ -71,6 +75,10 @@ msgstr "Séries de cartes de couleur"
msgid "Constant line"
msgstr "Ligne constante"
+#: tachartstrconsts.rscrosssymbol
+msgid "Plus"
+msgstr ""
+
#: tachartstrconsts.rscubicsplineseries
msgid "Cubic spline series"
msgstr "Séries de splines cubiques"
@@ -99,22 +107,50 @@ msgstr "Indicateur de point de données"
msgid "Delete"
msgstr "Supprimer"
+#: tachartstrconsts.rsdiagcrosssymbol
+msgid "Cross"
+msgstr ""
+
+#: tachartstrconsts.rsdiamondsymbol
+msgid "Diamond"
+msgstr ""
+
#: tachartstrconsts.rsdistancemeasurement
msgid "Distance measurement"
msgstr "Mesure des distances"
+#: tachartstrconsts.rsdowntrianglesymbol
+msgid "Down triangle"
+msgstr ""
+
#: tachartstrconsts.rsfieldseries
msgid "Vector field series"
msgstr "Séries de champs vectoriels"
+#: tachartstrconsts.rsfullstarsymbol
+msgid "Star (full)"
+msgstr ""
+
#: tachartstrconsts.rsfunctionseries
msgid "Function series"
msgstr "Séries de fonctions"
+#: tachartstrconsts.rshexagonsymbol
+msgid "Hexagon"
+msgstr ""
+
#: tachartstrconsts.rshidden
msgid "hidden"
msgstr ""
+#: tachartstrconsts.rshighbracketsymbol
+msgid "High bracket"
+msgstr ""
+
+#: tachartstrconsts.rshorbarsymbol
+msgid "Horizontal bar"
+msgstr ""
+
#: tachartstrconsts.rsinvalidlogbase
msgid "Logarithm base must be > 0 and <> 1."
msgstr "La base de logarithme doit être > 0 et <>1."
@@ -131,6 +167,14 @@ msgstr "Séries de moindres carrés ajustés"
msgid "Left"
msgstr ""
+#: tachartstrconsts.rsleftbracketsymbol
+msgid "Left bracket"
+msgstr ""
+
+#: tachartstrconsts.rslefttrianglesymbol
+msgid "Left triangle"
+msgstr ""
+
#: tachartstrconsts.rslinear
msgid "Linear"
msgstr "Linéaire"
@@ -143,6 +187,10 @@ msgstr "Séries de lignes"
msgid "Logarithmic"
msgstr "Logarithmique"
+#: tachartstrconsts.rslowbracketsymbol
+msgid "Low bracket"
+msgstr ""
+
#: tachartstrconsts.rsmanhattanplotseries
msgid "Manhattan plot series"
msgstr "Séries de points de Manhattan"
@@ -155,6 +203,10 @@ msgstr "Bas"
msgid "Up"
msgstr "Haut"
+#: tachartstrconsts.rsnosymbol
+msgid "(none)"
+msgstr ""
+
#: tachartstrconsts.rsopenhighlowcloseseries
msgid "Open-high-low-close series"
msgstr "Séries ouverture-max-min-clôture"
@@ -179,18 +231,46 @@ msgstr "Séries de courbes paramétriques"
msgid "Pie series"
msgstr "Séries de camemberts"
+#: tachartstrconsts.rspointsymbol
+msgid "Point"
+msgstr ""
+
#: tachartstrconsts.rspolarseries
msgid "Polar series"
msgstr "Séries polaires"
+#: tachartstrconsts.rsrectanglesymbol
+msgid "Rectangle"
+msgstr ""
+
#: tachartstrconsts.rsright
msgid "Right"
msgstr ""
+#: tachartstrconsts.rsrightbracketsymbol
+msgid "Right bracket"
+msgstr ""
+
+#: tachartstrconsts.rsrighttrianglesymbol
+msgid "Right triangle"
+msgstr ""
+
+#: tachartstrconsts.rsstarsymbol
+msgid "Star (lines)"
+msgstr ""
+
#: tachartstrconsts.rstop
msgid "Top"
msgstr ""
+#: tachartstrconsts.rstrianglesymbol
+msgid "Triangle"
+msgstr ""
+
+#: tachartstrconsts.rsunknownstyle
+msgid "Unknown Style %s"
+msgstr ""
+
#: tachartstrconsts.rsuserdefined
msgctxt "tachartstrconsts.rsuserdefined"
msgid "User-defined"
@@ -205,6 +285,10 @@ msgstr "Défini par l'utilisateur"
msgid "User-drawn series"
msgstr "Séries personnalisées"
+#: tachartstrconsts.rsvertbarsymbol
+msgid "Vertical bar"
+msgstr ""
+
#: tachartstrconsts.rszoombyclick
msgid "Zoom by click"
msgstr "Zoom sur clic"
diff --git a/components/tachart/languages/tachartstrconsts.hu.po b/components/tachart/languages/tachartstrconsts.hu.po
index 39ed4a237c..58cc49593d 100644
--- a/components/tachart/languages/tachartstrconsts.hu.po
+++ b/components/tachart/languages/tachartstrconsts.hu.po
@@ -63,6 +63,10 @@ msgstr "B-Spline"
msgid "Bubble series"
msgstr "Buborékok"
+#: tachartstrconsts.rscirclesymbol
+msgid "Circle"
+msgstr ""
+
#: tachartstrconsts.rscolormapseries
msgid "Color map series"
msgstr "Színtérkép"
@@ -71,6 +75,10 @@ msgstr "Színtérkép"
msgid "Constant line"
msgstr "Állandó vonal"
+#: tachartstrconsts.rscrosssymbol
+msgid "Plus"
+msgstr ""
+
#: tachartstrconsts.rscubicsplineseries
msgid "Cubic spline series"
msgstr "Cubic Spline"
@@ -99,22 +107,50 @@ msgstr "Adatpont tipp"
msgid "Delete"
msgstr "Törlés"
+#: tachartstrconsts.rsdiagcrosssymbol
+msgid "Cross"
+msgstr ""
+
+#: tachartstrconsts.rsdiamondsymbol
+msgid "Diamond"
+msgstr ""
+
#: tachartstrconsts.rsdistancemeasurement
msgid "Distance measurement"
msgstr "Távolságmérés"
+#: tachartstrconsts.rsdowntrianglesymbol
+msgid "Down triangle"
+msgstr ""
+
#: tachartstrconsts.rsfieldseries
msgid "Vector field series"
msgstr "Vektormezők"
+#: tachartstrconsts.rsfullstarsymbol
+msgid "Star (full)"
+msgstr ""
+
#: tachartstrconsts.rsfunctionseries
msgid "Function series"
msgstr "Függvény"
+#: tachartstrconsts.rshexagonsymbol
+msgid "Hexagon"
+msgstr ""
+
#: tachartstrconsts.rshidden
msgid "hidden"
msgstr "rejtett"
+#: tachartstrconsts.rshighbracketsymbol
+msgid "High bracket"
+msgstr ""
+
+#: tachartstrconsts.rshorbarsymbol
+msgid "Horizontal bar"
+msgstr ""
+
#: tachartstrconsts.rsinvalidlogbase
msgid "Logarithm base must be > 0 and <> 1."
msgstr "A logaritmus alapja > 0 és <> 1 lehet."
@@ -131,6 +167,14 @@ msgstr "Legkisebb illeszkedő négyzetek"
msgid "Left"
msgstr "Balra"
+#: tachartstrconsts.rsleftbracketsymbol
+msgid "Left bracket"
+msgstr ""
+
+#: tachartstrconsts.rslefttrianglesymbol
+msgid "Left triangle"
+msgstr ""
+
#: tachartstrconsts.rslinear
msgid "Linear"
msgstr "Lineáris"
@@ -143,6 +187,10 @@ msgstr "Vonal"
msgid "Logarithmic"
msgstr "Logaritmikus"
+#: tachartstrconsts.rslowbracketsymbol
+msgid "Low bracket"
+msgstr ""
+
#: tachartstrconsts.rsmanhattanplotseries
msgid "Manhattan plot series"
msgstr "Manhattan ábra"
@@ -155,6 +203,10 @@ msgstr "Le"
msgid "Up"
msgstr "Fel"
+#: tachartstrconsts.rsnosymbol
+msgid "(none)"
+msgstr ""
+
#: tachartstrconsts.rsopenhighlowcloseseries
msgid "Open-high-low-close series"
msgstr "Nyitó-max-min-záró értékek"
@@ -179,18 +231,46 @@ msgstr "Parametrikus görbe"
msgid "Pie series"
msgstr "Tortaszeletek"
+#: tachartstrconsts.rspointsymbol
+msgid "Point"
+msgstr ""
+
#: tachartstrconsts.rspolarseries
msgid "Polar series"
msgstr "Polár"
+#: tachartstrconsts.rsrectanglesymbol
+msgid "Rectangle"
+msgstr ""
+
#: tachartstrconsts.rsright
msgid "Right"
msgstr "Jobbra"
+#: tachartstrconsts.rsrightbracketsymbol
+msgid "Right bracket"
+msgstr ""
+
+#: tachartstrconsts.rsrighttrianglesymbol
+msgid "Right triangle"
+msgstr ""
+
+#: tachartstrconsts.rsstarsymbol
+msgid "Star (lines)"
+msgstr ""
+
#: tachartstrconsts.rstop
msgid "Top"
msgstr "Felülre"
+#: tachartstrconsts.rstrianglesymbol
+msgid "Triangle"
+msgstr ""
+
+#: tachartstrconsts.rsunknownstyle
+msgid "Unknown Style %s"
+msgstr ""
+
#: tachartstrconsts.rsuserdefined
msgctxt "tachartstrconsts.rsuserdefined"
msgid "User-defined"
@@ -205,6 +285,10 @@ msgstr "Felhasználó által megadva"
msgid "User-drawn series"
msgstr "Felhasználó által rajzolva"
+#: tachartstrconsts.rsvertbarsymbol
+msgid "Vertical bar"
+msgstr ""
+
#: tachartstrconsts.rszoombyclick
msgid "Zoom by click"
msgstr "Nagyítás kattintással"
diff --git a/components/tachart/languages/tachartstrconsts.po b/components/tachart/languages/tachartstrconsts.po
index 092e2c2adb..bcf4722e16 100644
--- a/components/tachart/languages/tachartstrconsts.po
+++ b/components/tachart/languages/tachartstrconsts.po
@@ -53,6 +53,10 @@ msgstr ""
msgid "Bubble series"
msgstr ""
+#: tachartstrconsts.rscirclesymbol
+msgid "Circle"
+msgstr ""
+
#: tachartstrconsts.rscolormapseries
msgid "Color map series"
msgstr ""
@@ -61,6 +65,10 @@ msgstr ""
msgid "Constant line"
msgstr ""
+#: tachartstrconsts.rscrosssymbol
+msgid "Plus"
+msgstr ""
+
#: tachartstrconsts.rscubicsplineseries
msgid "Cubic spline series"
msgstr ""
@@ -89,22 +97,50 @@ msgstr ""
msgid "Delete"
msgstr ""
+#: tachartstrconsts.rsdiagcrosssymbol
+msgid "Cross"
+msgstr ""
+
+#: tachartstrconsts.rsdiamondsymbol
+msgid "Diamond"
+msgstr ""
+
#: tachartstrconsts.rsdistancemeasurement
msgid "Distance measurement"
msgstr ""
+#: tachartstrconsts.rsdowntrianglesymbol
+msgid "Down triangle"
+msgstr ""
+
#: tachartstrconsts.rsfieldseries
msgid "Vector field series"
msgstr ""
+#: tachartstrconsts.rsfullstarsymbol
+msgid "Star (full)"
+msgstr ""
+
#: tachartstrconsts.rsfunctionseries
msgid "Function series"
msgstr ""
+#: tachartstrconsts.rshexagonsymbol
+msgid "Hexagon"
+msgstr ""
+
#: tachartstrconsts.rshidden
msgid "hidden"
msgstr ""
+#: tachartstrconsts.rshighbracketsymbol
+msgid "High bracket"
+msgstr ""
+
+#: tachartstrconsts.rshorbarsymbol
+msgid "Horizontal bar"
+msgstr ""
+
#: tachartstrconsts.rsinvalidlogbase
msgid "Logarithm base must be > 0 and <> 1."
msgstr ""
@@ -121,6 +157,14 @@ msgstr ""
msgid "Left"
msgstr ""
+#: tachartstrconsts.rsleftbracketsymbol
+msgid "Left bracket"
+msgstr ""
+
+#: tachartstrconsts.rslefttrianglesymbol
+msgid "Left triangle"
+msgstr ""
+
#: tachartstrconsts.rslinear
msgid "Linear"
msgstr ""
@@ -133,6 +177,10 @@ msgstr ""
msgid "Logarithmic"
msgstr ""
+#: tachartstrconsts.rslowbracketsymbol
+msgid "Low bracket"
+msgstr ""
+
#: tachartstrconsts.rsmanhattanplotseries
msgid "Manhattan plot series"
msgstr ""
@@ -145,6 +193,10 @@ msgstr ""
msgid "Up"
msgstr ""
+#: tachartstrconsts.rsnosymbol
+msgid "(none)"
+msgstr ""
+
#: tachartstrconsts.rsopenhighlowcloseseries
msgid "Open-high-low-close series"
msgstr ""
@@ -169,18 +221,46 @@ msgstr ""
msgid "Pie series"
msgstr ""
+#: tachartstrconsts.rspointsymbol
+msgid "Point"
+msgstr ""
+
#: tachartstrconsts.rspolarseries
msgid "Polar series"
msgstr ""
+#: tachartstrconsts.rsrectanglesymbol
+msgid "Rectangle"
+msgstr ""
+
#: tachartstrconsts.rsright
msgid "Right"
msgstr ""
+#: tachartstrconsts.rsrightbracketsymbol
+msgid "Right bracket"
+msgstr ""
+
+#: tachartstrconsts.rsrighttrianglesymbol
+msgid "Right triangle"
+msgstr ""
+
+#: tachartstrconsts.rsstarsymbol
+msgid "Star (lines)"
+msgstr ""
+
#: tachartstrconsts.rstop
msgid "Top"
msgstr ""
+#: tachartstrconsts.rstrianglesymbol
+msgid "Triangle"
+msgstr ""
+
+#: tachartstrconsts.rsunknownstyle
+msgid "Unknown Style %s"
+msgstr ""
+
#: tachartstrconsts.rsuserdefined
msgctxt "tachartstrconsts.rsuserdefined"
msgid "User-defined"
@@ -195,6 +275,10 @@ msgstr ""
msgid "User-drawn series"
msgstr ""
+#: tachartstrconsts.rsvertbarsymbol
+msgid "Vertical bar"
+msgstr ""
+
#: tachartstrconsts.rszoombyclick
msgid "Zoom by click"
msgstr ""
diff --git a/components/tachart/languages/tachartstrconsts.ru.po b/components/tachart/languages/tachartstrconsts.ru.po
index e3f9be68c8..f1209ccc06 100644
--- a/components/tachart/languages/tachartstrconsts.ru.po
+++ b/components/tachart/languages/tachartstrconsts.ru.po
@@ -63,6 +63,10 @@ msgstr "Диаграмма с B-сплайнами"
msgid "Bubble series"
msgstr "Пузырьковая диаграмма"
+#: tachartstrconsts.rscirclesymbol
+msgid "Circle"
+msgstr ""
+
#: tachartstrconsts.rscolormapseries
msgid "Color map series"
msgstr "Диаграмма с картой цветов"
@@ -71,6 +75,10 @@ msgstr "Диаграмма с картой цветов"
msgid "Constant line"
msgstr "Линия постоянной"
+#: tachartstrconsts.rscrosssymbol
+msgid "Plus"
+msgstr ""
+
#: tachartstrconsts.rscubicsplineseries
msgid "Cubic spline series"
msgstr "Диаграмма с кубическими сплайнами"
@@ -99,22 +107,50 @@ msgstr "Всплывающая подсказка для величины"
msgid "Delete"
msgstr "Удалить"
+#: tachartstrconsts.rsdiagcrosssymbol
+msgid "Cross"
+msgstr ""
+
+#: tachartstrconsts.rsdiamondsymbol
+msgid "Diamond"
+msgstr ""
+
#: tachartstrconsts.rsdistancemeasurement
msgid "Distance measurement"
msgstr "Измерение расстояния"
+#: tachartstrconsts.rsdowntrianglesymbol
+msgid "Down triangle"
+msgstr ""
+
#: tachartstrconsts.rsfieldseries
msgid "Vector field series"
msgstr "Диаграмма с векторным полем"
+#: tachartstrconsts.rsfullstarsymbol
+msgid "Star (full)"
+msgstr ""
+
#: tachartstrconsts.rsfunctionseries
msgid "Function series"
msgstr "Диаграмма по функции"
+#: tachartstrconsts.rshexagonsymbol
+msgid "Hexagon"
+msgstr ""
+
#: tachartstrconsts.rshidden
msgid "hidden"
msgstr "скрытая"
+#: tachartstrconsts.rshighbracketsymbol
+msgid "High bracket"
+msgstr ""
+
+#: tachartstrconsts.rshorbarsymbol
+msgid "Horizontal bar"
+msgstr ""
+
#: tachartstrconsts.rsinvalidlogbase
msgid "Logarithm base must be > 0 and <> 1."
msgstr "Основание логарифма должно быть больше нуля и не равно единице."
@@ -131,6 +167,14 @@ msgstr "Диаграмма по методу наименьших квадрат
msgid "Left"
msgstr "Левая"
+#: tachartstrconsts.rsleftbracketsymbol
+msgid "Left bracket"
+msgstr ""
+
+#: tachartstrconsts.rslefttrianglesymbol
+msgid "Left triangle"
+msgstr ""
+
#: tachartstrconsts.rslinear
msgid "Linear"
msgstr "Линейный масштаб"
@@ -143,6 +187,10 @@ msgstr "График"
msgid "Logarithmic"
msgstr "Логарифмический масштаб"
+#: tachartstrconsts.rslowbracketsymbol
+msgid "Low bracket"
+msgstr ""
+
#: tachartstrconsts.rsmanhattanplotseries
msgid "Manhattan plot series"
msgstr "Манхэттенская диаграмма"
@@ -155,6 +203,10 @@ msgstr "Вниз"
msgid "Up"
msgstr "Вверх"
+#: tachartstrconsts.rsnosymbol
+msgid "(none)"
+msgstr ""
+
#: tachartstrconsts.rsopenhighlowcloseseries
msgid "Open-high-low-close series"
msgstr "Биржевая диаграмма"
@@ -179,18 +231,46 @@ msgstr "Диаграмма с параметрическими кривыми"
msgid "Pie series"
msgstr "Круговая диаграмма"
+#: tachartstrconsts.rspointsymbol
+msgid "Point"
+msgstr ""
+
#: tachartstrconsts.rspolarseries
msgid "Polar series"
msgstr "Лепестковая диаграмма"
+#: tachartstrconsts.rsrectanglesymbol
+msgid "Rectangle"
+msgstr ""
+
#: tachartstrconsts.rsright
msgid "Right"
msgstr "Правая"
+#: tachartstrconsts.rsrightbracketsymbol
+msgid "Right bracket"
+msgstr ""
+
+#: tachartstrconsts.rsrighttrianglesymbol
+msgid "Right triangle"
+msgstr ""
+
+#: tachartstrconsts.rsstarsymbol
+msgid "Star (lines)"
+msgstr ""
+
#: tachartstrconsts.rstop
msgid "Top"
msgstr "Верхняя"
+#: tachartstrconsts.rstrianglesymbol
+msgid "Triangle"
+msgstr ""
+
+#: tachartstrconsts.rsunknownstyle
+msgid "Unknown Style %s"
+msgstr ""
+
#: tachartstrconsts.rsuserdefined
msgctxt "tachartstrconsts.rsuserdefined"
msgid "User-defined"
@@ -205,6 +285,10 @@ msgstr "Пользовательское средство"
msgid "User-drawn series"
msgstr "Пользовательская диаграмма"
+#: tachartstrconsts.rsvertbarsymbol
+msgid "Vertical bar"
+msgstr ""
+
#: tachartstrconsts.rszoombyclick
msgid "Zoom by click"
msgstr "Изменение масштаба щелчком"
diff --git a/components/tachart/languages/tachartstrconsts.se.po b/components/tachart/languages/tachartstrconsts.se.po
index 8e82a410d5..31d2740ddc 100644
--- a/components/tachart/languages/tachartstrconsts.se.po
+++ b/components/tachart/languages/tachartstrconsts.se.po
@@ -66,6 +66,10 @@ msgstr "B-Spline diagram"
msgid "Bubble series"
msgstr "Bubbeldiagram"
+#: tachartstrconsts.rscirclesymbol
+msgid "Circle"
+msgstr ""
+
#: tachartstrconsts.rscolormapseries
msgid "Color map series"
msgstr "Färglandskap"
@@ -74,6 +78,10 @@ msgstr "Färglandskap"
msgid "Constant line"
msgstr "Konstant linje"
+#: tachartstrconsts.rscrosssymbol
+msgid "Plus"
+msgstr ""
+
#: tachartstrconsts.rscubicsplineseries
msgid "Cubic spline series"
msgstr "Kubisk spline"
@@ -102,22 +110,50 @@ msgstr "Datapunkt tips"
msgid "Delete"
msgstr "Radera"
+#: tachartstrconsts.rsdiagcrosssymbol
+msgid "Cross"
+msgstr ""
+
+#: tachartstrconsts.rsdiamondsymbol
+msgid "Diamond"
+msgstr ""
+
#: tachartstrconsts.rsdistancemeasurement
msgid "Distance measurement"
msgstr "Avståndsmätning"
+#: tachartstrconsts.rsdowntrianglesymbol
+msgid "Down triangle"
+msgstr ""
+
#: tachartstrconsts.rsfieldseries
msgid "Vector field series"
msgstr ""
+#: tachartstrconsts.rsfullstarsymbol
+msgid "Star (full)"
+msgstr ""
+
#: tachartstrconsts.rsfunctionseries
msgid "Function series"
msgstr "Funktionskurva"
+#: tachartstrconsts.rshexagonsymbol
+msgid "Hexagon"
+msgstr ""
+
#: tachartstrconsts.rshidden
msgid "hidden"
msgstr ""
+#: tachartstrconsts.rshighbracketsymbol
+msgid "High bracket"
+msgstr ""
+
+#: tachartstrconsts.rshorbarsymbol
+msgid "Horizontal bar"
+msgstr ""
+
#: tachartstrconsts.rsinvalidlogbase
msgid "Logarithm base must be > 0 and <> 1."
msgstr ""
@@ -134,6 +170,14 @@ msgstr "Least-squares fit kurva"
msgid "Left"
msgstr ""
+#: tachartstrconsts.rsleftbracketsymbol
+msgid "Left bracket"
+msgstr ""
+
+#: tachartstrconsts.rslefttrianglesymbol
+msgid "Left triangle"
+msgstr ""
+
#: tachartstrconsts.rslinear
msgid "Linear"
msgstr "Linjär"
@@ -146,6 +190,10 @@ msgstr "Linjediagram"
msgid "Logarithmic"
msgstr "Logaritmisk"
+#: tachartstrconsts.rslowbracketsymbol
+msgid "Low bracket"
+msgstr ""
+
#: tachartstrconsts.rsmanhattanplotseries
msgid "Manhattan plot series"
msgstr "Manhattan plot"
@@ -158,6 +206,10 @@ msgstr "Ner"
msgid "Up"
msgstr "Upp"
+#: tachartstrconsts.rsnosymbol
+msgid "(none)"
+msgstr ""
+
#: tachartstrconsts.rsopenhighlowcloseseries
msgid "Open-high-low-close series"
msgstr "Först-högst-lägst-sist kurva"
@@ -182,18 +234,46 @@ msgstr "parametrisk kurva"
msgid "Pie series"
msgstr "Cirkeldiagram"
+#: tachartstrconsts.rspointsymbol
+msgid "Point"
+msgstr ""
+
#: tachartstrconsts.rspolarseries
msgid "Polar series"
msgstr "Polardiagram"
+#: tachartstrconsts.rsrectanglesymbol
+msgid "Rectangle"
+msgstr ""
+
#: tachartstrconsts.rsright
msgid "Right"
msgstr ""
+#: tachartstrconsts.rsrightbracketsymbol
+msgid "Right bracket"
+msgstr ""
+
+#: tachartstrconsts.rsrighttrianglesymbol
+msgid "Right triangle"
+msgstr ""
+
+#: tachartstrconsts.rsstarsymbol
+msgid "Star (lines)"
+msgstr ""
+
#: tachartstrconsts.rstop
msgid "Top"
msgstr ""
+#: tachartstrconsts.rstrianglesymbol
+msgid "Triangle"
+msgstr ""
+
+#: tachartstrconsts.rsunknownstyle
+msgid "Unknown Style %s"
+msgstr ""
+
#: tachartstrconsts.rsuserdefined
msgctxt "tachartstrconsts.rsuserdefined"
msgid "User-defined"
@@ -209,6 +289,10 @@ msgstr "Användardefinierad"
msgid "User-drawn series"
msgstr "Användardefinierat diagram"
+#: tachartstrconsts.rsvertbarsymbol
+msgid "Vertical bar"
+msgstr ""
+
#: tachartstrconsts.rszoombyclick
msgid "Zoom by click"
msgstr "Zooma med klick"
diff --git a/components/tachart/tachartcombos.pas b/components/tachart/tachartcombos.pas
new file mode 100644
index 0000000000..c00cbb7139
--- /dev/null
+++ b/components/tachart/tachartcombos.pas
@@ -0,0 +1,402 @@
+unit TAChartCombos;
+
+interface
+
+uses
+ SysUtils, Graphics, Classes, Controls, StdCtrls, TATypes, TAGraph;
+
+const
+ DEFAULT_POINTER_STYLE = psCircle;
+
+type
+
+ TSeriesPointerStyleCombobox = class(TCustomCombobox)
+ private
+ FSelected : TSeriesPointerStyle;
+ FSymbolBordercolor : TColor;
+ FSymbolFillColor : TColor;
+ FShowNames : boolean;
+ FAlignment : TAlignment;
+ FBitmaps: array[TSeriespointerStyle] of TBitmap;
+ procedure SetAlignment(Value:TAlignment);
+ procedure SetSelected(AValue: TSeriesPointerStyle);
+ procedure SetShowNames(AValue: boolean);
+ procedure SetSymbolBorderColor(AValue: TColor);
+ procedure SetSymbolFillColor(AValue: TColor);
+ protected
+ procedure CreateBitmaps(AWidth, AHeight: Integer);
+ procedure DrawItem(AIndex: Integer; ARect: TRect; AState: TOwnerDrawState); override;
+ procedure DestroyBitmaps;
+ procedure GetItems; override;
+ function GetSymbol(AIndex: Integer): TSeriesPointerStyle; inline;
+ procedure RealSetText(const AValue: TCaption); override;
+ procedure SetItemIndex(const AValue: Integer); override;
+ public
+ constructor Create(AOwner: TComponent); override;
+ destructor Destroy; override;
+ published
+ // new properties
+ property Selected : TSeriesPointerStyle read FSelected write SetSelected default DEFAULT_POINTER_STYLE;
+ property ShowNames : boolean read FShowNames write SetShowNames default true;
+ property SymbolBorderColor : TColor read FSymbolBorderColor write SetSymbolBorderColor default clBlack;
+ property SymbolFillColor : TColor read FSymbolFillColor write SetSymbolFillColor default clWhite;
+ property Alignment : TAlignment read FAlignment write SetAlignment default taLeftJustify;
+
+ // inherited
+ property Align;
+ property Anchors;
+ property BiDiMode;
+ property BorderSpacing;
+ property Constraints;
+ property DragKind;
+ property ParentBiDiMode;
+ property AutoDropDown default False;
+ property CharCase;
+ property Color;
+ property DragMode;
+ property DragCursor;
+ property DropDownCount default 24;
+ property Enabled;
+ property Font;
+ property ItemHeight;
+ property ItemWidth;
+ property ParentColor;
+ property ParentFont;
+ property ParentShowHint;
+ property PopupMenu;
+ property ShowHint;
+ property TabOrder;
+ property TabStop;
+ property Visible;
+ property OnChange;
+ property OnClick;
+ property OnCloseUp;
+ property OnContextPopup;
+ property OnDblClick;
+ property OnEnter;
+ property OnExit;
+ property OnKeyDown;
+ property OnKeyPress;
+ property OnKeyUp;
+ property OnDragDrop;
+ property OnDragOver;
+ property OnDropDown;
+ property OnEndDrag;
+ property OnEndDock;
+ property OnMouseEnter;
+ property OnMouseLeave;
+ property OnMouseMove;
+ property OnMouseUp;
+ property OnMouseWheel;
+ property OnMouseWheelDown;
+ property OnMouseWheelUp;
+ property OnSelect;
+ property OnStartDock;
+ property OnStartDrag;
+ property OnUTF8KeyPress;
+ end;
+
+procedure Register;
+
+
+implementation
+
+uses
+ LCLType, Types, TypInfo, Math,
+ TAChartStrConsts, TAChartUtils, TADrawUtils, TADrawerCanvas, TACustomSeries,
+ TASeries, TALegend;
+
+procedure Register;
+begin
+ RegisterComponents(CHART_COMPONENT_IDE_PAGE, [TSeriesPointerStyleCombobox]);
+end;
+
+function GetSymbolName(ASymbol: TSeriesPointerStyle) : string;
+begin
+ case ASymbol of
+ psRectangle : Result := rsRectangleSymbol;
+ psCircle : Result := rsCircleSymbol;
+ psCross : Result := rsCrossSymbol;
+ psDiagCross : Result := rsDiagCrossSymbol;
+ psStar : Result := rsStarSymbol;
+ psLowBracket : Result := rsLowBracketSymbol;
+ psHighBracket : Result := rsHighBracketSymbol;
+ psLeftTriangle : Result := rsLeftTriangleSymbol;
+ psRightTriangle: Result := rsRightTriangleSymbol;
+ psDiamond : Result := rsDiamondSymbol;
+ psVertBar : Result := rsVertBarSymbol;
+ psTriangle : Result := rsTriangleSymbol;
+ psLeftBracket : Result := rsLeftBracketSymbol;
+ psRightBracket : Result := rsRightBracketSymbol;
+ psHorBar : Result := rsHorBarSymbol;
+ psPoint : Result := rsPointSymbol;
+ psDownTriangle : Result := rsDownTriangleSymbol;
+ psHexagon : Result := rsHexagonSymbol;
+ psFullStar : Result := rsFullStarSymbol;
+ else Result := rsNoSymbol;
+ end;
+end;
+
+
+{ TSeriesPointerStyleCombobox }
+
+constructor TSeriesPointerStyleCombobox.Create(AOwner:TComponent);
+begin
+ inherited Create(AOwner);
+ Style := csOwnerDrawFixed;
+ DropdownCount := 24;
+ ReadOnly := true;
+ FSymbolBorderColor := clBlack;
+ FSymbolFillColor := clWhite;
+ FShowNames := true;
+ FAlignment := taLeftJustify;
+ FSelected := DEFAULT_POINTER_STYLE;
+ GetItems;
+ Caption := GetSymbolName(FSelected);
+end;
+
+destructor TSeriesPointerStyleCombobox.Destroy;
+begin
+ DestroyBitmaps;
+ inherited;
+end;
+
+procedure TSeriesPointerStyleCombobox.CreateBitmaps(AWidth, AHeight: Integer);
+var
+ ps: TSeriesPointerStyle;
+ chart: TChart;
+ id: IChartDrawer;
+ series: TLineSeries;
+ legItems: TChartLegendItems;
+begin
+ DestroyBitmaps;
+
+ chart := TChart.Create(nil);
+ try
+ for ps in TSeriesPointerStyle do begin
+ FBitmaps[ps] := TBitmap.Create;
+ FBitmaps[ps].Transparent := true;
+ FBitmaps[ps].TransparentColor := RgbToColor(254,254,254);
+ FBitmaps[ps].SetSize(AWidth, AHeight);
+ FBitmaps[ps].Canvas.Brush.Color := FBitmaps[ps].TransparentColor;
+ FBitmaps[ps].Canvas.FillRect(0, 0, AWidth, AHeight);
+
+ series := TLineSeries.Create(chart);
+ try
+ with series do begin
+ Pointer.Style := ps;
+ Pointer.Brush.Color := FSymbolFillColor;
+ Pointer.Pen.Color := FSymbolBorderColor;
+ Pointer.HorizSize := Min(AWidth, AHeight);
+ Pointer.VertSize := Pointer.HorizSize;
+ ShowPoints := true;
+ LineType := ltNone;
+ end;
+ chart.AddSeries(series);
+ legitems := TChartLegendItems.Create;
+ try
+ series.GetSingleLegendItem(legItems);
+ id := TCanvasDrawer.Create(FBitmaps[ps].Canvas);
+ id.Pen := Chart.Legend.SymbolFrame;
+ legItems[0].Draw(id, Rect(0, 0, AWidth-1, AHeight-1));
+ finally
+ legitems.Free;
+ end;
+ finally
+ series.Free;
+ end;
+ end;
+ finally
+ chart.Free;
+ end;
+end;
+
+procedure TSeriesPointerStyleCombobox.DestroyBitmaps;
+var
+ ps: TSeriesPointerStyle;
+begin
+ for ps in TSeriesPointerStyle do
+ FreeAndNil(FBitmaps[ps]);
+end;
+
+procedure TSeriesPointerStyleCombobox.DrawItem(AIndex:Integer; ARect:TRect;
+ AState: TOwnerDrawState);
+const
+ MARGIN = 2;
+var
+ symRect: TRect;
+ symheight : integer;
+ symwidth: Integer;
+ txt: string;
+ ps: TSeriesPointerStyle;
+ ts: TTextStyle;
+ alignmnt: TAlignment;
+begin
+ SymRect := ARect;
+ inc(SymRect.Top, MARGIN);
+ dec(SymRect.Bottom, MARGIN);
+ symheight := SymRect.Bottom - SymRect.Top;
+ symwidth := symheight * 6 div 4; // see: TLegendItemLinePointer.Draw in TALagend
+ if (BiDiMode <> bdLeftToRight) then
+ case FAlignment of
+ taLeftJustify : alignmnt := taRightJustify;
+ taCenter : alignmnt := taCenter;
+ taRightJustify: alignmnt := taLeftJustify
+ end
+ else
+ alignmnt := FAlignment;
+ case alignmnt of
+ taLeftJustify : ;
+ taCenter : SymRect.Left := (ARect.Left + ARect.Right - symwidth) div 2;
+ taRightJustify : SymRect.Left := ARect.Right - MARGIN - symwidth;
+ end;
+ SymRect.Right := SymRect.Left + symwidth;
+
+ with Canvas do begin
+ if odSelected in AState then begin
+ Brush.Color := clHighlight;
+ Font.Color := clHighlightText;
+ end else begin
+ Brush.Color := Color;
+ Font.Color := clWindowText;
+ end;
+ Brush.Style := bsSolid;
+ FillRect(ARect);
+
+ // Create bitmaps of pointer symbols if they are nil, or if height has changed
+ if (FBitmaps[psCircle] = nil) or (FBitmaps[psCircle].Height <> symheight)
+ then CreateBitmaps(symwidth, symheight);
+
+ Pen.Color := FSymbolBorderColor;
+ Pen.Style := psSolid;
+ Pen.Width := 1;
+ Brush.Color := FSymbolFillColor;
+ ps := GetSymbol(AIndex);
+ Canvas.Draw(SymRect.Left, SymRect.Top, FBitmaps[ps]);
+
+ if FShowNames and (alignmnt <> taCenter) then begin // Note: No text output for taCenter!
+ txt := Items[AIndex];
+ case alignmnt of
+ taLeftJustify : ARect.Left := SymRect.Right + 2 * MARGIN;
+ taRightJustify : ARect.Left := SymRect.Left - 2 * MARGIN - Canvas.TextWidth(txt);
+ end;
+ ts := Canvas.TextStyle;
+ ts.Layout := tlCenter;
+ ts.Opaque := false;
+ ts.EndEllipsis := true;
+ TextRect(ARect, ARect.Left, ARect.Top, txt, ts);
+ end;
+ end;
+end;
+
+procedure TSeriesPointerStyleCombobox.GetItems;
+const
+ // Arrange symbols in "nice" order
+ LIST: array[0..19] of TSeriesPointerStyle = (
+ psNone, psRectangle, psCircle, psDiamond,
+ psTriangle, psDownTriangle, psLeftTriangle, psRightTriangle,
+ psHexagon, psFullStar,
+ psStar, psCross, psDiagCross,
+ psLowBracket, psHighBracket, psLeftBracket, psRightBracket,
+ psHorBar, psVertBar, psPoint);
+var
+ ps: TSeriesPointerStyle;
+ s: String;
+ i: Integer;
+ sel: TSeriesPointerStyle;
+ styleItems: TStrings;
+begin
+ sel := FSelected;
+ styleItems := TStringList.Create;
+ try
+ for i:=0 to High(LIST) do begin
+ ps := LIST[i];
+ s := GetSymbolName(ps);
+ if s <> '' then
+ styleItems.AddObject(s, TObject(PtrInt(ps)));
+ end;
+ inherited Items.Assign(styleitems);
+ finally
+ styleItems.Free;
+ SetSelected(sel);
+ end;
+end;
+
+function TSeriesPointerStyleCombobox.GetSymbol(AIndex: Integer): TSeriesPointerStyle;
+begin
+ if AIndex = -1 then
+ Result := psNone
+ else
+ Result := TSeriesPointerStyle(Items.Objects[AIndex]);
+end;
+
+{ Is overridden to prevent loss of default selected pointer style when
+ combo is added to a form in designer. }
+procedure TSeriesPointerStyleCombobox.RealSetText(const AValue: TCaption);
+var
+ sel: TSeriesPointerStyle;
+begin
+ sel := FSelected;
+ inherited RealSetText(AValue);
+ SetSelected(sel);
+end;
+
+procedure TSeriesPointerStyleCombobox.SetAlignment(Value:TAlignment);
+begin
+ if Value <> FAlignment then begin
+ FAlignment := Value;
+ Invalidate;
+ end;
+end;
+
+procedure TSeriesPointerStyleCombobox.SetItemIndex(const AValue: Integer);
+begin
+ FSelected := GetSymbol(AValue);
+ if AValue = inherited ItemIndex then exit;
+ inherited SetItemIndex(AValue);
+end;
+
+procedure TSeriesPointerStyleCombobox.SetSelected(AValue:TSeriesPointerStyle);
+var
+ i : integer;
+begin
+ for i := 0 to Items.Count-1 do begin
+ if GetSymbol(i) = AValue then begin
+ FSelected := AValue;
+ ItemIndex := i;
+ Invalidate;
+ exit;
+ end;
+ end;
+ ItemIndex := -1;
+ FSelected := psNone;
+end;
+
+procedure TSeriesPointerStyleCombobox.SetShowNames(AValue: boolean);
+begin
+ if (FShowNames <> AValue) then begin
+ FShowNames := AValue;
+ Invalidate;
+ end;
+end;
+
+procedure TSeriesPointerStyleCombobox.SetSymbolBorderColor(AValue: TColor);
+begin
+ if FSymbolBorderColor <> AValue then begin
+ FSymbolBorderColor := AValue;
+ DestroyBitmaps;
+ Invalidate;
+ end;
+end;
+
+procedure TSeriesPointerStyleCombobox.SetSymbolFillColor(AValue: TColor);
+begin
+ if FSymbolFillColor <> AValue then begin
+ FSymbolFillColor := AValue;
+ DestroyBitmaps;
+ Invalidate;
+ end;
+end;
+
+
+end.
diff --git a/components/tachart/tachartlazaruspkg.lpk b/components/tachart/tachartlazaruspkg.lpk
index aa2a0b0aea..29f9b0adbc 100644
--- a/components/tachart/tachartlazaruspkg.lpk
+++ b/components/tachart/tachartlazaruspkg.lpk
@@ -29,7 +29,7 @@
for details about the copyright.
"/>
-
+
@@ -240,6 +240,11 @@
+
+
+
+
+
diff --git a/components/tachart/tachartlazaruspkg.pas b/components/tachart/tachartlazaruspkg.pas
index 0473aae7a8..8617cdfb56 100644
--- a/components/tachart/tachartlazaruspkg.pas
+++ b/components/tachart/tachartlazaruspkg.pas
@@ -17,7 +17,7 @@ uses
TAToolEditors, TAMath, TAChartImageList, TAChartTeeChart, TADataTools,
TAAnimatedSource, TATextElements, TAAxisSource, TASeriesPropEditors,
TACustomFuncSeries, TAFitUtils, TAGUIConnector, TADiagram, TADiagramDrawing,
- TADiagramLayout, TAChartStrConsts, LazarusPackageIntf;
+ TADiagramLayout, TAChartStrConsts, TAChartCombos, LazarusPackageIntf;
implementation
@@ -39,6 +39,7 @@ begin
RegisterUnit('TAToolEditors', @TAToolEditors.Register);
RegisterUnit('TAChartImageList', @TAChartImageList.Register);
RegisterUnit('TASeriesPropEditors', @TASeriesPropEditors.Register);
+ RegisterUnit('TAChartCombos', @TAChartCombos.Register);
end;
initialization
diff --git a/components/tachart/tachartstrconsts.pas b/components/tachart/tachartstrconsts.pas
index cc1c725634..178beceea8 100644
--- a/components/tachart/tachartstrconsts.pas
+++ b/components/tachart/tachartstrconsts.pas
@@ -78,6 +78,29 @@ resourcestring
// ChartUtils
tasFailedSubcomponentRename = 'Failed to rename components: %s';
+ // ChartCombos
+ rsUnknownStyle = 'Unknown Style %s';
+ rsRectangleSymbol = 'Rectangle';
+ rsCircleSymbol = 'Circle';
+ rsTriangleSymbol = 'Triangle';
+ rsCrossSymbol = 'Plus';
+ rsDiagCrossSymbol = 'Cross';
+ rsStarSymbol = 'Star (lines)';
+ rsLowBracketSymbol = 'Low bracket';
+ rsHighBracketSymbol = 'High bracket';
+ rsLeftBracketSymbol = 'Left bracket';
+ rsRightBracketSymbol = 'Right bracket';
+ rsDiamondSymbol = 'Diamond';
+ rsHexagonSymbol = 'Hexagon';
+ rsFullStarSymbol = 'Star (full)';
+ rsLeftTriangleSymbol = 'Left triangle';
+ rsRightTriangleSymbol = 'Right triangle';
+ rsDownTriangleSymbol = 'Down triangle';
+ rsVertBarSymbol = 'Vertical bar';
+ rsHorBarSymbol = 'Horizontal bar';
+ rsPointSymbol = 'Point';
+ rsNoSymbol = '(none)';
+
implementation
diff --git a/components/tachart/tagraph.res b/components/tachart/tagraph.res
index 731001ba04..d015af7760 100644
Binary files a/components/tachart/tagraph.res and b/components/tachart/tagraph.res differ