2016-11-29 2 views
1

Ich verwende ein TDBChart - von TeeChart Std ein Kreisdiagramm angezeigt werden, die eine SUM von Werten aus meiner PRICE Spalte in der db tut Ich verwende und es ist Sortierung die Daten auf Months - von einer DATE Spalte, die als datetime type in der Datenbank festgelegt ist.ändern TDBChart Monat Formatanzeige

Meine TDBChart zeigt folgendes:

enter image description here

Mein Problem: Wie kann ich den Monat machen anzuzeigen im Oktober 2016 und November 2016

(idealy Monaten Oktober 16. und 16. November).

Wie Sie sehen können, wird es derzeit als Zahlen angezeigt - 10-16 und 11-16.

Es scheint nicht möglich, eine Format-Option für dieses irgendwo innerhalb der Reihe Optionen zu finden.

Antwort

2

Ich würde die Datetime als eine Zeichenfolge vor dem Hinzufügen der Punkte formatieren und ich würde es als Bezeichnung übergeben. Dh:

uses DateUtils; 

procedure TForm1.FormCreate(Sender: TObject); 
var tmpDate: TDateTime; 
    i: Integer; 
begin 
    for i:=0 to 1 do 
    begin 
    tmpDate:=IncMonth(Today,i); 
    Series1.AddPie(random*100,FormatDateTime('mmm-yy', tmpDate)); 
    end; 
end; 

EDIT:

Wenn Sie es zu einer Datenquelle bevölkern verbinden, dann werden die Etiketten automatisch hinzugefügt. Dann ist die einzige Option, die ich sehe, ohne die Quellen zu modifizieren wäre das OnGetMarkText Ereignis wie folgt zu verwenden:

procedure TForm1.Series1GetMarkText(Sender: TChartSeries; ValueIndex: Integer; 
    var MarkText: string); 
var i: Integer; 
    m, y: string; 
begin 
    i:=Pos('-',MarkText); 
    m:=Copy(MarkText,1,i-1); 
    y:=Copy(MarkText,i+1,Length(MarkText)-i); 
    MarkText:=ShortMonthNames[StrToInt(m)] + ' ' + y; 
end; 
+0

ich die Informationen direkt über die Datasource Registerkarte Zusammenfassung hinzufügen und dann dort meine TSimpleDataSet Einstellung. Wenn ich Ihren Vorschlag richtig verstehe, kann ich auf diese Weise nicht "Punkte hinzufügen und als Kennzeichnung weitergeben", oder habe ich verstanden, was Sie vorschlagen, falsch? – Petzy

+0

Hallo, danke für die Ergänzung zur Antwort! Ich habe dieses Event nicht in der Liste des Objektinspektors verfügbar, wenn ich den fraglichen DBChart auswähle. Ich merke, dass es sich um ein Series Event handelt. Wie kann ich auf diese zugreifen? Wählen Sie die Serie in meinem DBChart erzeugt keine Ereignisliste im Objektinspektor – Petzy

+0

Sie können die Reihe im Objektinspektor auswählen (klicken Sie auf das Formular, um den Fokus zu ändern und der Objektinspektor wird aktualisiert und fügt die Reihe zur Combobox hinzu) . Alternativ können Sie das Ereignis manuell deklarieren und das Ereignis zur Laufzeit unter 'FormCreate' zuweisen:' Series1.OnGetMarkText: = Series1GetMarkText; ' – Yeray

Verwandte Themen