2017-01-10 35 views
0

У меня есть программа Delphi Berlin, показывающая гистограмму, и я хочу, чтобы над каждым баром отображалась надпись, показывающая числовое значение, и еще одна метка под панелью, показывающая описание, как день недели. Я могу получить оба, если я использую 2 кнопки, показывая один или другой, но есть ли способ показать 2 ярлыка на гистограмме, один над планкой, один внизу? В этой программе кнопка2 показывает метку выше и ось ниже, но она показывает одну и ту же информацию дважды для каждого бара.TCHART с Delphi - не может отображаться количество баров и текстовое описание

Я попытался спросить об этом в предыдущем посте, но не было достаточно места для ответа, чтобы добавить достаточно подробностей.

procedure TForm1.Button1Click(Sender: TObject); 
var 
    i : integer; 
begin 
    chart1.series[0].clear; 
     for i := 1 to 4 do 
      chart1.series[0].add(100+5*i,'',clred); 
end; 

procedure TForm1.Button2Click(Sender: TObject); 
var 
    i : integer; 
begin 
    chart1.series[0].clear; 
    day[1] := 'Sun'; 
    day[2] := 'Mon'; 
    day[3] := 'Tues'; 
    day[4] := 'Wed'; 
    for i := 1 to 4 do 
     chart1.series[0].add(100+5*i,day[i],clred); 
end; 
+0

Ваш предыдущий вопрос задан * Удалите текст над каждым баром *, и теперь вы публикуете вопрос о том, как вернуть его обратно? И, пожалуйста, по крайней мере, попытайтесь правильно отформатировать свой код. Если вы не знаете, как это сделать, нажмите кнопку *? * В правом верхнем углу текстовой области для некоторых инструкций. –

+0

«* ... но в ответе было недостаточно места для добавления достаточно подробностей ... *« Вы знаете, что можете [редактировать] (http://stackoverflow.com/posts/41559446/edit) свои сообщения , не так ли? Просто используйте кнопку * edit * под тегами, чтобы открыть редактор. –

+0

Спасибо за ваши ответы Ken & Tom. Первоначально отображаемые метки содержали случайное число, а по неизвестным причинам он исправлялся. Я рад видеть, что он отображает значение, которое я добавил в каждую серию, и следующий плакат предоставил решение. Как пометить его как ответ? – SteveL

ответ

1

По умолчанию метки серии устанавливается как smsLabelOrValue и стиль этикетки ось устанавливается на talAuto; это покажет метку точки, если она присутствует, или значение точки, если для этой точки нет метки.

Чтобы изменить это поведение, вы можете изменить эти свойства:

  • серии марок стиле:

    Chart1.Series[0].Marks.Style:=smsValue; 
    

    Возможные значения:

    smsValue,    { 1234 } 
    smsPercent,   { 12 % } 
    smsLabel,    { Cars } // If label is empty, no mark will be displayed 
    smsLabelPercent,  { Cars 12 % } 
    smsLabelValue,  { Cars 1234 } 
    smsLegend,   { (Legend.Style) } 
    smsPercentTotal,  { 12 % of 1234 } 
    smsLabelPercentTotal, { Cars 12 % of 1234 } 
    smsXValue,   { 1..2..3.. or 21/6/2014 } 
    smsXY,    { 123 456 } 
    smsSeriesTitle,  { Series1 } 
    smsPointIndex,  { 1..2..3... } 
    smsPercentRelative, { 100%..90%..120%... } 
    smsLabelPercentValue, { Cars 12 % 1234 } 
    smsLabelOrValue 
    
  • Ось стиль этикетки:

    Chart1.Axes.Bottom.LabelStyle:=talValue; //talAuto, talNone, talValue, talMark, talText, talPointValue 
    

В вашем случае, добавив в свой код в Button2Click дает желаемый результат:

Chart1.Series[0].Marks.Style:=smsValue; 

desired result

+0

Большое вам спасибо. Он работает именно так, как я хочу. – SteveL

+1

Добро пожаловать! Обратите внимание, что вы можете принять ответ – Yeray

0

ответ Yeray является решением. Повторяется здесь: Chart1.Series [0] .Marks.Style: = smsValue;

+0

Вместо того, чтобы повторять правильный ответ, [accept] (http://stackoverflow.com/help/accepted-answer) ответ. –

+0

Сверху ссылку: * Признание указывается цветной галочкой рядом с ответом, который был принят автором оригинала вопроса *. –