|
Новый COMОбъект("Word.Application"); | ☑ | ||
---|---|---|---|---|
0
alexei366
07.05.13
✎
15:14
|
Народ использую в качестве макета в одном месте документ word, вроде всё написал, чтоб переменные заменялись и табличные части делались.
Потом задумал фигарить в несколько потоков, имеется ввиду что обычно за раз формируются документов 5, и чтобы при нажатии на кнопку запускалось одновременно 5 фоновых заданий, каждое из которых заполняет свой макет. Тут я коечо затестил, у меня в коде для размножения таблиц используются методы word Copy() и Paste(). Но эти методы работают с буфером, т.е берём два фоновых заданий и вот первое заносит в буфер строку таблицы из своего макета и успевает вставить 3 строки их 5, и тут второе фоновое задание копирует в буфер свою строку из своего макета, на выходе получим нормальный второй документ а в первом 4 и 5 строки будут левыми скопированные из другого макета и ясен фиг с другими параметрами. Кто-нить сталкивался и как тогда решал такой вопрос, а кто не сталкивался посоветуйте чем заменить эти методы ворда. |
|||
1
mikecool
07.05.13
✎
15:17
|
недавно была тема про булзип принтер...
может там нашли решение многопоточности |
|||
2
alexei366
07.05.13
✎
15:28
|
(1) ты чего поиздеваться решил (моя тема была, многопоточности у него как понял нет, нужно реализовывть чтото между базами и булзипом чтоб настройки печати не путались)
А к данной теме это отношения в плане реализации не имеет. |
|||
3
mikecool
07.05.13
✎
15:29
|
(2) бугога, думаешь я всех запоминаю?
|
|||
4
acsent
07.05.13
✎
15:32
|
откажись от использования буфера
|
|||
5
alexei366
07.05.13
✎
15:33
|
(4) скажи чем заменить?
|
|||
6
alexei366
07.05.13
✎
15:34
|
(3) да мне по барабану, у тя мысли есть как задачу эту решить?
|
|||
7
mikecool
07.05.13
✎
15:35
|
(6) не использовать буфер )))
|
|||
8
mikecool
07.05.13
✎
15:35
|
+7 считывай структуру и по ней рисуй новый док
|
|||
9
alexei366
07.05.13
✎
15:41
|
(8) А пример приведёшь по считыванию структуры?
|
|||
10
alexei366
07.05.13
✎
16:56
|
Блин в сандартной конфе также делают
ОбластьHandler.Document.Range(ОбластьHandler.Start, ОбластьHandler.End).Copy(); ActiveDocument = ПечатнаяФорма.COMСоединение.ActiveDocument; // вставляем первый строку, по которому далее будет выполняться // вставка новых строк с форматированием по первой ВставитьРазрывНаНовуюСтроку(ПечатнаяФорма); ПозицияВставки = ActiveDocument.Range().End; ОбластьВставки = ActiveDocument.Range(ПозицияВставки-1, ПозицияВставки-1); ОбластьВставки.Paste(); ActiveDocument.Range(ПозицияВставки-2, ПозицияВставки-2).Delete(); |
|||
11
alexei366
07.05.13
✎
22:28
|
АПП
|
|||
12
alexei366
08.05.13
✎
10:41
|
Народ кто поможет если сможет)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |