Author |
Topic |
|
Eugine
7 Posts |
Posted - 04/02/2007 : 17:41:29
|
Добрый день, помогите новичку в вопросе автоматизации Visio диаграмм, собственными силами пока не справляюсь использую инструментарий Visio 2003 Interop и DrawingControl в Visual Studio 2003 (C#)
С объектной моделью вроде как разобрался, непонятно только, как грамотно работать с объетами Пытаюсь получить доступ к объекту
//Создаем объект приложения
application = (Visio.Application) drawingControl.Window.Application;
//Грузим шаблон диаграммы Ганта
const string stencilNameU = "gantt_m.vss";
Visio.Document doc = application.Documents.AddEx(templateNameU,Visio.VisMeasurementSystem.visMSDefault,(int)Visio.VisOpenSaveArgs.visAddNoWorkspace,0);
//Пытаюсь получить шейп, вот тут как раз коллекция оказывается пустой!!!
Visio.Shape objShape = (Visio.Shape)doc.Pages[0].Shapes[0]
В шаблон для простоты предварительно уже загружена диаграмма Ганта, в дальнейшем планирую из моего приложения на Шарпе, просто заполнить его данными... |
|
mers
Russia
159 Posts |
Posted - 04/02/2007 : 18:09:48
|
Здравствуйте. 1. Я правильно понимаю что шаблоном вы называете Stencil? 2. Откуда вы хотите получить шейп? со стенсила или с листа? На нем, кстати, вообще что-нибудь есть? |
|
|
Eugine
7 Posts |
Posted - 04/02/2007 : 18:37:57
|
Моя ошибка, спутал шаблон с документом, действительно если сохранить шаблон в документ
doc.SaveAs("C:\\GanttChart.vsd");
drawingControl.Src = "C:\\GanttChart.vsd";
Visio.Page pg = drawingControl.Window.PageAsObj;
Visio.Shape objShape = pg.Shapes.get_ItemU(5);
objShape.Text = "Первый заголовок";
Visio.Section objSection = objShape.get_Section(3);
Visio.Cell objCell = objSection[0].get_CellU(3);
то можно добраться до любой ячейки, тогда возникает вопрос, как мне например изменить текст в ячейке, также как в заголовке? Свойство Text отсутствует.. ? |
|
|
mers
Russia
159 Posts |
Posted - 04/02/2007 : 23:58:35
|
Текст конкретно какой ячейки вы хотите изменить? вообще команды изменения значения ячейки это: cell.Formula и cell.Result
Может вы напишите задачу полностью, тогда будет легче понять друг друга. |
Edited by - mers on 04/03/2007 11:11:58 |
|
|
Eugine
7 Posts |
Posted - 04/03/2007 : 11:52:46
|
Описываю задачу: Построить диаграмму Ганта и заполнить данными из базы.
Диаграмма Ганта имеет следующий вид
TaskName || DateStart || DateEnd || Duration || График
Task1 || 03.02.2007 || 04.02.2007 || 2 d || ==>
Так как при создании новой диаграммы, запускается Addon с формой начальных настроек, то во избежание этого, я создал документ с диаграммой предварительно, далее остается 2 задачи 1. Добавить в диаграмму n-ое количчество Tasks (по количеству в базе) 2. Заполнить ячейки данными
Сейчас пытаюсь разобраться методом тыка,где какие шейпы, на уже построенном графике |
|
|
mers
Russia
159 Posts |
Posted - 04/03/2007 : 12:29:43
|
Теперь понятно. К сожалению с диаграммами Ганта не работал, поэтому врядли могу помочь.
Но на вашем месте, я бы внимательно изучил шейпшит этого шейпа и посмотрел что он запускает при создании ячейки, при ее переименовании и т.д., и просто использовал данные функции в своей программе, а не пытался сделать все "с нуля", ведь по сути вся необходимая функциональность в этом шейпе уже есть. |
Edited by - mers on 04/03/2007 12:30:15 |
|
|
Eugine
7 Posts |
Posted - 04/03/2007 : 12:43:26
|
Спасибо за совет!
|
|
|
|
Topic |
|
|
|