All Forums
 Категория Visio
 Форум Вопросы и ответы
 Диаграмма Ганта
Author Previous Topic Topic Next 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. Откуда вы хотите получить шейп? со стенсила или с листа? На нем, кстати, вообще что-нибудь есть?
Go to Top of Page

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 отсутствует.. ?
Go to Top of Page

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
Go to Top of Page

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. Заполнить ячейки данными

Сейчас пытаюсь разобраться методом тыка,где какие шейпы, на уже построенном графике
Go to Top of Page

mers

Russia
159 Posts

Posted - 04/03/2007 :  12:29:43
Теперь понятно.
К сожалению с диаграммами Ганта не работал, поэтому врядли могу помочь.

Но на вашем месте, я бы внимательно изучил шейпшит этого шейпа и посмотрел что он запускает при создании ячейки, при ее переименовании и т.д., и просто использовал данные функции в своей программе, а не пытался сделать все "с нуля", ведь по сути вся необходимая функциональность в этом шейпе уже есть.

Edited by - mers on 04/03/2007 12:30:15
Go to Top of Page

Eugine

7 Posts

Posted - 04/03/2007 :  12:43:26
Спасибо за совет!
Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)