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