All Forums
 Категория Visio
 Форум Вопросы и ответы
 Тормоза
Author Previous Topic Topic Next Topic  

Ven

28 Posts

Posted - 07/10/2006 :  12:00:31
Уважаемые, не подскажете, это клинический случай или же есть какие то методы оптимизации. Используется ActiveX компонент Visio в среде Дельфи. Проблемма в следующем: На схеме есть около 100 объектов различной степени сложности. Так вот, при нажатии кнопки я подсвечиваю у одного из объектов все линии красным цветом и меняю их толщину. делается это так:
FShape.Cells['LineColor'].FormulaU:= 'RGB(255,0,0)';
FShape.Cells['LineWeight'].Result['pt']:= 8;
Причем FShape это указатель на типа IVShape и он уже есть, т.е. время на поиск шейпа с этим указателем не тратится. Так вот, при вызове этих действий окрашивание происходит с задержкой в 2 секунды. Это очень много. Я не представляю какая будет задержка, если объектов будет тысяча. Когда объектов мало, задержки нету. Я сохранил этот чертеж в файл и открыл его в самом Визио. В нем я выделил все объекты и нажал кнопку красить в красный цвет. Все объекты покрасились практически мгновенно. Кто нибудь может подсказать в чем тут дело? Или дать какие нибудь советы и рекомендации. Заранее благодарен.

mers

Russia
159 Posts

Posted - 07/11/2006 :  09:50:55
Каким образом вы получаете ссылку на шейп?

Edited by - mers on 07/11/2006 09:55:42
Go to Top of Page

Ven

28 Posts

Posted - 07/11/2006 :  12:26:38
quote:
Originally posted by mers

Каким образом вы получаете ссылку на шейп?



FShape := VisioDrawingControl.Document.Application.ActivePage.Shapes.Item['Sheet.112'];

Где FShape это переменная типа IVShape, VisioDrawingControl это непосредственно сам ActiveX компонент (TDrawingControl). Причем время, затрачиваемое на выполнение этой опирации я не учитываю. Я ее специально вынес в отдельную функцию и сначала делаю это действие, а уже потом с переменной FShape делаю описанное в первом посте.
Go to Top of Page

mers

Russia
159 Posts

Posted - 07/11/2006 :  13:11:12
Даже не знаю чем вам помоч. :(
Только что сделал подобное у себя, все нормально. Красится моментально, единственное отличие - я использую C#
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)