|
Транзакция при работе с визио. | ☑ | ||
---|---|---|---|---|
0
UserMista
04.06.13
✎
16:21
|
И так 8.1, актив икс компонента визио.
Есть процедура - берет очередную точку из кэша и гнет линию. Вешаем процедуру на кнопку - жмем на нее 5 раз - линия построена как надо. засунем процедуру в цикл: Для каждого Строка Из СтрокиВКэше Цикл Фигура.CellsSRC(10, Строка.ИДСегмента, ИИ).ResultIU = Строка.Колонка1; конеццикла; Будет один сгиб из пяти. Вызовем этот циклвручную через кнопку 5 раз - построится правильно. Как правильно повесить в цикл транзакцию? конструкция вида Для каждого Строка Из СтрокиВКэше Цикл UndoScope = ЭлементыФормы.VisAX.Document.Application.BeginUndoScope("Транзакция"); Фигура.CellsSRC(10, Строка.ИДСегмента, ИИ).ResultIU = Строка.Колонка1; ЭлементыФормы.VisAX.Document.Application.EndUndoScope(UndoScope, True); конеццикла; неработает. 1совская транзакция тоже непомогает. |
|||
1
Maxus43
04.06.13
✎
16:22
|
при чем тут транзакция я что то не понял
|
|||
2
UserMista
04.06.13
✎
16:24
|
сумбурно выразился. Если короче то- Есть код - который при выполнении его через кнопку на форме несколько раз - правильно отрабатывает.
Если засовываем этот код в простейший цикл на 5 проходов - то выполняется первое действие |
|||
3
UserMista
04.06.13
✎
16:24
|
Как в первом варианте при одном нажатии на кнопку
|
|||
4
Maxus43
04.06.13
✎
16:26
|
текст того что в кнопке выкладывай, на которую 5 раз жмакаешь
|
|||
5
UserMista
04.06.13
✎
16:29
|
Процедура КоманднаяПанель1обновимка(Кнопка)
Для К=0 по 5 цикл транз=ЭлементыФормы.VisAX.Document.Application.BeginUndoScope("Ручное редактирование"+К)); ВыполнитьОбновлениеГеометрииОбъектов(); ЭлементыФормы.VisAX.Document.Application.EndUndoScope(транз, True); КонецЦикла; КонецПроцедуры Здесь хоть ставишь цикл хоть не ставишь - для нужного результата кнопку нужно нажать 5 раз |
|||
6
UserMista
04.06.13
✎
16:30
|
Внутри нигде незакрытых транзакций от визио нету. - несколько раз все проверил
|
|||
7
ИС-2
naïve
04.06.13
✎
16:31
|
(2) я так думаю, что компонта не успевает выполнить действия. Предлагаю для теста в каждой итерации делать паузу 5 секунд
|
|||
8
UserMista
04.06.13
✎
16:34
|
(7) Интересная мысль - спасиб. через полчаса до дома доеду попробую вставить паузу.
|
|||
9
Maxus43
04.06.13
✎
16:34
|
транз=ЭлементыФормы.VisAX.Document.Application.BeginUndoScope("Ручное редактирование"+К));
ЭлементыФормы.VisAX.Document.Application.EndUndoScope(транз, True); закоменти. что даст? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |