Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Excel OLE

16K
03 июня 2006 года
redark
3 / / 21.03.2006
Люди добрые!
Я уже запарился, голова даже соображать перестала. А прогу сдать надо уже скоро.
В общем, задача такая:
Средствами CBuilder построить график из 3-х линий, т.н. "труба". Таких графиков в системе несколько. Где нужна одна линия, я строю его без проблем. И там где необходима зависимость от какой-то одной колонки, тоже все норм.
А тут есть 6 колонок в листе. И те, которые идут подряд две зависят друг от друга. То есть две колонки - это одна линия (по X одна и по Y другая). Пытаюсь сделать SeriesCollection, а он мне фигню какую-то, а не график подсовывает. :-( Там этих линий 6 штук и они все лежат на 2-х прямых. Вот такой там код пользую:
Код:
Form2->chart=Form2->App.OlePropertyGet("Charts").OleFunction("Add");
 Form2->chart.OlePropertySet("ChartType",65);
 Variant range=Form2->Shh.OlePropertyGet("Range",Form2->Shh.OlePropertyGet("Cells",2,1),
 Form2->Shh.OlePropertyGet("Cells",Form2->RowsNum(Form2->Shh),Form2->ColumnNum(Form2->Shh)-1));
 Form2->chart.OleFunction("SetSourceData",range);
 Form2->chart.OleProcedure("Location",1,"Труба");
 Variant series;

 //Строим первую линию
     series=Form2->chart.OlePropertyGet("SeriesCollection",1);
     range=Form2->Shh.OlePropertyGet("Range",Form2->Shh.OlePropertyGet("Cells",2,2),
     Form2->Shh.OlePropertyGet("Cells",Form2->RowsNum(Form2->Shh),2));
     series.OlePropertySet("XValues",range);
     range=Form2->Shh.OlePropertyGet("Range",Form2->Shh.OlePropertyGet("Cells",2,1),
     Form2->Shh.OlePropertyGet("Cells",Form2->RowsNum(Form2->Shh),1));
     series.OlePropertySet("Values",range);
     series.OlePropertySet("Name",("Линия 1");

//Строим вторую линию
     series=Form2->chart.OlePropertyGet("SeriesCollection",2);
     range=Form2->Shh.OlePropertyGet("Range",Form2->Shh.OlePropertyGet("Cells",2,4),
     Form2->Shh.OlePropertyGet("Cells",Form2->RowsNum(Form2->Shh),4));
     series.OlePropertySet("XValues",range);
     range=Form2->Shh.OlePropertyGet("Range",Form2->Shh.OlePropertyGet("Cells",2,3),
     Form2->Shh.OlePropertyGet("Cells",Form2->RowsNum(Form2->Shh),3));
     series.OlePropertySet("Values",range);
     series.OlePropertySet("Name",("Линия 2");

//Строим третью линию
     series=Form2->chart.OlePropertyGet("SeriesCollection",3);
     range=Form2->Shh.OlePropertyGet("Range",Form2->Shh.OlePropertyGet("Cells",2,6),
     Form2->Shh.OlePropertyGet("Cells",Form2->RowsNum(Form2->Shh),6));
     series.OlePropertySet("XValues",range);
     range=Form2->Shh.OlePropertyGet("Range",Form2->Shh.OlePropertyGet("Cells",2,5),
     Form2->Shh.OlePropertyGet("Cells",Form2->RowsNum(Form2->Shh),5));
     series.OlePropertySet("Values",range);
     series.OlePropertySet("Name",("Линия 3");
 Form3->out(per+=app);
 Form2->chart.OlePropertySet("HasTitle",1);
 Form2->chart.OlePropertyGet("ChartTitle").OlePropertySet("Caption","График состояния системы");


Вот такая вот ерунда. При этом строит он каждую колонку отдельно. А как сделать так, чтобы он строил их все по 2, причем они должнгы зависеть друг от друга, а не от одной колонки...
При этом в макросе VBA записано примерно также. Даю ему те же команды. А он ни в какую. Голова пухнет.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог