|
Транзакция при работе с визио. |
☑ |
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
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);
закоменти. что даст?
|
|
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший