TChart ordnet Werte der X-Achse falsch zu
-
Hallo
Ich habe folgendes Problem.
Ich habe ein TChart das ich mit mehreren Kurven fülle.
Nun ist das Problem wenn ich einer Kurve einen Wert wegnehme.
dann wird dieser nicht automatisch zum nächsten verlängert sondern wird komplett rausgeschmissen und nicht dargestellt. Die eine Kurve ist dann kürzer als die anderen.
Wie ist es möglich das die Komponente die Werte dann selbst nachzeichnet
und net untern Tisch fallen lässt??
Wenn ihr net wisst was ich meine probierts mal aus mit ner TDBChart und nem Button
und folgendem Quellcode:void __fastcall TForm1::Button1Click(TObject *Sender) { TLineSeries* MySeries; TChartAxis *Custom0; TChartAxis *CustomH; // Add horizontal Axis MyChartE->BottomAxis->Maximum = 6.0; MyChartE->BottomAxis->Minimum = 0.0; for (int i=0; i < 3; i++) { // Serie anlegen und Query zuweisen MySeries = new TLineSeries(MyChartE); MySeries->ShowInLegend = false; // MySeries->FillSampleValues(10); MySeries->Clear(); if ( i == 0) { MySeries->Add( 0,"" , clGreen); MySeries->Add( 0,"" , clRed); MySeries->Add( 0,"" , clBlack); MySeries->Add( 0,"" , clNavy); MySeries->Add( 0,"" , clYellow); MySeries->Add( 0,"" ,clBlue); } if ( i == 1) { MySeries->Add( 80, "", clGreen); MySeries->Add( 22, "", clRed); MySeries->Add( 60, "", clBlack); //MySeries->Add( 40, "", clNavy); MySeries->Add( 58, "", clYellow); MySeries->Add( 20, "",clBlue); } if ( i == 2) { MySeries->Add( 33, "", clGreen); MySeries->Add( 22, "", clRed); MySeries->Add( 44, "", clBlack); MySeries->Add( 45, "", clNavy); MySeries->Add( 11, "", clYellow); MySeries->Add( 0, "",clBlue); } // Serie dem Chart zuordnen MyChartE->AddSeries(MySeries); MyChartE->BottomAxis-> // Skala (Achse) anlegen und der Serie zuordnen Custom0 = new TChartAxis(MyChartE->CustomAxes); Custom0->StartPosition = 1; Custom0->EndPosition = 100; // Custom0->EndPosition = hoehe * (i +1); // Custom0->StartPosition = hoehe * (i +1) - hoehe + 1; Custom0->PositionPercent = 0; Custom0->Horizontal = false; Custom0->Visible = true; MySeries->CustomVertAxis = MyChartE->CustomAxes->Items[MyChartE->SeriesCount() -1]; } // Skalen neu aufteilen int anzahl = MyChartE->SeriesCount(); if (!anzahl) return; int hoehe = 100 / anzahl; for (int i=0; i < anzahl; i++) // 6 Achsen sind bereits defaultmässig vorhanden { MyChartE->Axes->Items[i +6]->EndPosition = hoehe * (i +1); MyChartE->Axes->Items[i +6]->StartPosition = hoehe * (i +1) - hoehe + 1; }
-
Hallo,
Wie entfernst du dies Werte denn? Warum nimmst du nicht AddXY?
-
Ich entferne die Werte nicht.
Nur wenn ich z.B aus einer Datenbank Werte einlese
und bei einer Datenbank wurde eben gerade dieser Wert für das Datum nicht abgespeichert dann sollte das Chart halt einfach eine line vom vorherigen zum nachfolgenden ziehen.Was ist der unterschied zwischen Add und Add XY?
vor - nachteile?
-
Bei Add werden nur Y-Werte hinzugefügt. Die X-Werte werden dann generiert (einfach hochgezählt). Die Reihenfolge entspricht dann der Reihenfolge des Hinzufügens.
Ich habe eigentlich gern immer etwas mehr Kontrolle über meine Wertepaare. Eigentlich hat AddXY keine Nachteile gegenüber Add.
aLeXanDer.. schrieb:
Nun ist das Problem wenn ich einer Kurve einen Wert wegnehme.
Was soll das denn dann bedeuten?
-
Damit habe ich gemeint, wenn ich im Code mal einen Wert auskommentiere, hab ja nur getestet

Werte werden also nicht gelöscht, kann nur sein das sie nicht vorhanden sind.Mit deinem Vorschlag hast du mir schon sehr sehr sehr weiter geholfen.
Danke
Noch ne Frage :Ich gib ihm das hier mit
MyChartE->BottomAxis->Maximum = EncodeDate(2008,12,20); MyChartE->BottomAxis->Minimum = EncodeDate(2008,12,02); MyChartE->BottomAxis->Increment = DateTimeStep[dtOneDay]; MyChartE->BottomAxis->Automatic = false;und dann befüll ich wie vorher mit XY

aber jetzt bekomm ich keine Kurven mehr zu sehen
er skaliert alles richtig wie vorher usw.
aba das Chart ist praktisch leer
Warum das aufeinmal?!
-
Hab auch das jetzt schnell gelöst

beim befüllen , muss ich für den XWert auch Encode... angeben
dann zeichnet er alles
Gut
Danke für die Hilfe
-
Stell Automatic erstmal wieder auf true und schau mal welchen Wertebereich deine Daten haben.