TChart mit Fadenkreuz versehen
3. Sep 2008, 12:00
Guten Tag,
ich versuche gerade bei einem TChart (Delphi 5) ein Fadenkreuz zu erstellen. Dabei habe ich mit dem Canvas einfach zwei Linien in das Chart gezeichnet, die sich an der Position der Maus schneiden. Nun soll allerdings noch am X-Wert (Vertikal) der Wert einer Serie angezeigt werden. Das gestaltet sich leider etwas problematisch: Mein erster Versuch war es, den vertikalen Pixelwert (X) in den Wert der Horizontalen Achse (Zeitachse) umzuwandeln, danach kann ich mit TChartSeries.XValues.Locate den Index des Punktes herausfinden, der dem Achsenwert entspricht. Das Problem dabei ist, dass die Pixelwerte fast nie genau einen Datenpunkt auf der unteren Achse treffen (z.B. 03.09.2008 09:21:43; der nächste Punkt wäre 03.09.2008 09:21:00). Deshalb habe ich versucht die X-Position in Pixeln solange zu verschieben, bis ich einen Datenpunkt treffe. Das war allerdings ein Trugschluss, denn die zeitpunkte waren immer noch total daneben...
Es gibt die Funktion TChartSeries.Clicked(x, y: Integer), die mir den DatensatzIndex zurückgibt, der unter den gegebenen Koordinaten liegen, dabei kann die Position auch auf der Verbindungslinie zwischen zwei Punkten sein. Das Problem bei dieser Funktion ist, dass ich die Y-Position kennen muss. Ich möchte aber den Datensatz an der Stelle X (Vertikal) haben, der Y-Wert ist unbekannt.
Ich blicke leider durch die ganzen Funktionen nicht mehr durch, welche mir was berechnet, und wie ich die verschachteln könnte.
Ich hoffe mir kann jemand helfen wie man das Lösen könnte, vielleicht gibt es auch noch eine einfachere Lösung.
Vielen Dank
Horat
|