waagerechte Linie in TChart



  • Hallo zusammen,

    ich habe ein einfaches Fenster im BCB6, auf dem sich ein Eingabefeld(Edit1) und ein Chart(TeeChart V4) befindet(Chart1). In das Eingabefeld soll eine Y-Koordinate eingegeben werden und das Programm soll mir dann eine waagerechte Linie von {0;y} bis {12;y} darstellen.
    Folgenden Code habe ich dabei erstellt:

    void __fastcall TForm1::Edit1Change(TObject *Sender)
    {
    double y=Edit1->Text.ToDouble();
    Chart1->Series[0]->Clear();
    Chart1->Series[0]->AddXY(0,y,"");
    Chart1->Series[0]->AddXY(12,y,"");
    }

    Problem: Das ganze funktioniert nur,wenn die Eingabe also der Wert von y unter ca. 1820 ist. Will ich einen Wert darüber darstellen,gibt es einen Zugriffsfehler.Der Fehler tritt nur bei zwei Punkten mit gleichem Ordinatenwert auf.Das Darstellen beispielsweise einer Linearen Funktion (mit Steigung) ist kein Problem.Bin ich hier gerad auf ein Bug von TChart gestoßen, oder mach ich was falsch? Wäre nett,wenn mir da jemand weiterhelfen könnte.

    Schon mal im Voraus besten Dank

    Sebastian



  • Hallo,

    Das sollte problemlos für alle Werte funktionieren. Bei mir geht das jedenfalls (allerdings mit TChart 5).
    Bist du mal mit dem Debugger durchgegangen? Wo tritt denn der Zugriffsfehler auf?



  • Hallo Braunstein,

    das Problem tritt bei der ersten Übergabe auf.
    Also bei:
    Chart1->Series[0]->AddXY(0,y,"");

    Gibt es eine Möglichkeit, an TChart5 kostenlos ranzukommen und das in BCB6 zu implementieren?

    Gruß Sebastian



  • versuch mal folgendes hinter dem AddXY

    Chart1->LeftAxis->Automatic = false;
    Chart1->LeftAxis->Maximum = y+1;
    Chart1->LeftAxis->Minimum = y-1;
    


  • TChart5 (oder aktuell 7) bekommt man AFAIK nicht kostenlos.
    Müsste die AddXY-Funktion nicht anders aussehen?

    Chart1->Series[0]->AddXY(0,y,"",clTeeColor);
    

    Ich weiß jetzt nicht ob folgendes bei der 4er Version geht.

    Chart1->Series[0]->Clear();
    Chart1->Series[0]->BeginUpdate();
    Chart1->Series[0]->AddXY(0,y,"");
    Chart1->Series[0]->AddXY(12,y,""); 
    Chart1->Series[0]->EndUpdate();
    


  • Besten dank zunächst euch beiden.Hab's jetzt mit Linnea's Code hinbekommen.Das geht zwar auch nur bis 1*10^16 aber damit kann/muss ich wohl leben.Es handelt sich scheinbar um einen Bug bei der automatischen Skalierung.
    @Braunstein:
    -clTeeColor ist ein optionaler Parameter->geht auch ohne(auf jeden Fall bei Vers.4)
    -Chart1->Series[0]->BeginUpdate() und Chart1->Series[0]->EndUpdate() gibts in
    meiner Vers. leider nit
    -Welchen BCB muss man haben, um TChart5 im Paket mitzubekommen ?Ich hab jetzt
    BCB6,all zu viel kam ja nit danach..

    Gruß



  • Soweit ich weiß gibt es die höheren TChart-Versionen nur kostenpflichtig und nicht zusammen mit dem Builder. Ich habe die Version 5 gekauft.
    Siehe auch hier
    http://www.teemach.com/


Anmelden zum Antworten