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","График состояния системы");
Excel OLE
Я уже запарился, голова даже соображать перестала. А прогу сдать надо уже скоро.
В общем, задача такая:
Средствами CBuilder построить график из 3-х линий, т.н. "труба". Таких графиков в системе несколько. Где нужна одна линия, я строю его без проблем. И там где необходима зависимость от какой-то одной колонки, тоже все норм.
А тут есть 6 колонок в листе. И те, которые идут подряд две зависят друг от друга. То есть две колонки - это одна линия (по X одна и по Y другая). Пытаюсь сделать SeriesCollection, а он мне фигню какую-то, а не график подсовывает. :-( Там этих линий 6 штук и они все лежат на 2-х прямых. Вот такой там код пользую:
Код:
Вот такая вот ерунда. При этом строит он каждую колонку отдельно. А как сделать так, чтобы он строил их все по 2, причем они должнгы зависеть друг от друга, а не от одной колонки...
При этом в макросе VBA записано примерно также. Даю ему те же команды. А он ни в какую. Голова пухнет.