Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > Подписи к данным по оси x в диаграммах Excel


Автор: ilya198293 11.3.2008, 15:58
Подскажите пожалуйста как можно подписать точки по оси х(чтоб не счётчик был, а данные из колонки).
Шикарную статейку http://kornjakov.ru/stat.htm#s16
излазил вдоль и поперёк.

Сейчас подключаю данные так:
Ch:=Report.Charts.Item[prov];
Ch.SetSourceData(Report.Application.Range['D12','D51'],xlColumns);

Автор: Albinos_x 12.3.2008, 01:24
изапши макрос и посмотри какое свойство выставляется...

Автор: ilya198293 12.3.2008, 08:08
Записал макрос.

Код

Sub Макрос2()
'
' Макрос2 Макрос
'
'
    Range("D12:D51").Select
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.SetSourceData Source:=Range( _
        "'Лист1'!$D$12:$D$51")
    ActiveChart.ChartType = xlLineMarkers
    ActiveChart.PlotArea.Select
    ActiveChart.SeriesCollection(1).XValues = _
        "='Лист1'!$C$12:$C$51"
    ActiveSheet.ChartObjects("Диаграмма 3").Activate
    ActiveChart.ChartArea.Select
    ActiveSheet.ChartObjects("Диаграмма 3").Activate
End Sub


Вот только не очень у меня получается преобразовать код VB в код Delphi.
какую команду нужно написать, чтоб изменить?
Попробовал так:
Ch.SeriesCollection(1).XValues:=Report.Application.Range['C12','C51'];
так
Ch.SeriesCollection.Item[1].XValues:=Report.Application.Range['C12','C51'];
так
Ch.SeriesCollection.Item(1).XValues:=Report.Application.Range['C12','C51'];

Да, ещё, Excel 2007-ой у меня.

Автор: Albinos_x 12.3.2008, 21:43
а так не пробовал:
Код

ch.SeriesCollection(1).XValues:='=''''Лист1''''!$C$12:$C$51';

Автор: ilya198293 13.3.2008, 07:40
Я пишу так.
Код

ch.SeriesCollection(1).XValues;

Ничего не присваиваю, ничего не читаю, просто обращаюсь к свойству и уже получаю ошибку "Член группы не найден".
Если пишу так:
Код

ch.SeriesCollection(1);

то проходит.
Т.е. получается что у SeriesCollection(1) нет свойства XValues.
В таких вариантах ошибка таже:
Ch.SeriesCollection.Item[1].XValues;
Ch.SeriesCollection.Item(1).XValues;
У Item нет свойства XValues.

Автор: Albinos_x 13.3.2008, 22:22
Цитата(ilya198293 @  13.3.2008,  07:40 Найти цитируемый пост)
Ничего не присваиваю, ничего не читаю, просто обращаюсь к свойству и уже получаю ошибку "Член группы не найден"

а сам чарт в это время то есть?

на сайте корнякова это видел:
Цитата

Оси диаграммы могут иметь подписи, представляющие собой области и описываемые свойствами, присущими любым прямоугольным областям на диаграмме. Рассмотрим только запись текста и включение, выключение отображения объекта "подпись оси". Доступ ко всем полям и методам подписи осуществляется через коллекцию Axes, члены которой и есть ссылки на подписи. В приложениях Delphi запись текста в объект "подпись оси" можно реализовать с помощью функции AxisChart.
Function AxisChart (Name:variant;Category,Series,Value:string):boolean;
begin
 AxisChart:=true;
 try
  if Category<>'' then E.Charts.Item[name].Axes[xlCategory].HasTitle:=True
   else E.Charts.Item[name].Axes[xlCategory].HasTitle:=False;
  if Series<>'' then E.Charts.Item[name].Axes[xlSeries].HasTitle:=True
   else E.Charts.Item[name].Axes[xlSeries].HasTitle:=False;
  if Value<>'' then E.Charts.Item[name].Axes[xlValue].HasTitle:=True
   else E.Charts.Item[name].Axes[xlValue].HasTitle:=False;
  E.Charts.Item[name].Axes[xlCategory].AxisTitle.Text:=Category;
  E.Charts.Item[name].Axes[xlSeries].AxisTitle.Text:=Series;
  E.Charts.Item[name].Axes[xlValue].AxisTitle.Text:=Value;
 except
  AxisChart:=false;
 end;
End;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)