|
|
|
Несколько неординарных вопросов по Word...
|
|||
|---|---|---|---|
|
#18+
Привет всем! Вобщем у меня возникла необходимость работы из-под фоксы с вордом в связи с чем возникли некотооые трудности, решение которых я до сих пор нигде не нашел, втч ни на фоксклубе, ни здесь. I) Мне необходимо добавлять к существующему документу небольшой шаблон. Делаю это так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. - проблема2: я добавляю шаблон с некими полями и запрещаю редактировать все остальное кроме полей (m.loWord.ActiveDocument.Protect(2)). Но поскольку и основной документ создавался из шаблона то и в нем есть поля - а их-то уже нельзя редактировать - как это реализовать? Нужно что-то вроде конвертирования документа с полями в документ без оных, а тогда уже к нему добавлять шаблон с полями - но как? - проблема3: вытекает из проблемы2 - я запрещаю редактирование документа кроме полей, но в таком случае поля почему-то не заполняются. Причем если защиту не включать то заполняются, а как только включаю - никаких сообщений нет, процедура программного заполнения проходит нормально, но все поля незаполненные... II) Задача: запускаем ворд из-под фоксы с неким шаблоном. Даем юзеру редактировать содержимое полей. II.1) Хотелось бы чтобы вернуться в фокс было невозможно пока не закроешь ворд с редактируемым документом. В связи с чем возникают такие вопросы: 1) Как запретить пользователю сохранять/создавать/добавлять/открывать файл(ы)? К примеру я нашел как запретить все основное меню, но это не совсем то, т.к. все еще можно нажать CTRL-S, CRTL-N, CRTL-O и вообще многое из меню нужно юзеру... Фактически же нужно запретить только меню Файл - но как? В принципе можно дать возможность сохраняться, но в заранее заданный файл и только. Тоже неизвестно как и все равно нужно запретить создание нового документа, SaveAs. 2) Теперь далее - юзер заполнил документ и закрывает ворд. Как при закрытии в таком случае вытряхнуть из ворда его документ? Как вообще словить этот момент чтоб сохранить данные? II.2) Если не получается так, то я вижу следующий вариант - фоксой запускаю ворд и месиджбоксом жду когда юзер закончит. Тогда програмно забираю документ и закрываю ворд. Вопросы такие: 1) Как еще можно забрать документ кроме программного сохранения во временный файл, к примеру если я сохраняю документы не отдельными файлами, а в мемо-поле базы путем filetostr()? Может как-то через клипбоард, но с сохранением всех приколов - форматирование, шрифты, картинки и тп? Просто я читал что у офиса какой-то свой особенный тип буфера обмена... Опять же таким образом исключается лишнее сохранение в файл. А может возможно узнать в какой временный файл сохраняется текущий документ, программно спровоцировать автосейв и забрать из него? 2) Остается в силе п II.1.1 3) Как не дать пользователю закрыть ворд как приложение при вызове ворда из-под фоксы? 4) Как расчехлиться что юзер, такая редиска, взял да и закрыл ворд сам если невозможно 3)? Нашел только вот такое решение (на фоксклубе): Код: plaintext 1. 2. 3. 4. 5. 6. 7. Спасибо! VFP9.0, Office XP ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2007, 13:09 |
|
||
|
Несколько неординарных вопросов по Word...
|
|||
|---|---|---|---|
|
#18+
На счет форматирования: Открой руками исходный документ, запусти макрорекордер, сделай руками как надо, и посмотри что в макросе получилось, а потом этот макрос на фоксе перепиши. По второму пункту, если я правильно понял что пользователь должен работать не более чем с одним документом, попробуй так: создай глобальную переменную (лучше класс-обертку а в него все логику) для открытия документов, а дальше проверяй везде где обрашение к документам идет: открыт документ - нельзя второй открывать закрыл пользователь руками (по алгоритму из фоксклуба) - сохрани в базу что после закрытия осталось. Или можешь через OLE свой документ прямо на форме открыть, в Solution посмотри, там пример есть. Тут как раз Word без меню "файл" получается. И сохранить этот OLE-объект в базу можно без промежуточных файлов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2007, 14:48 |
|
||
|
Несколько неординарных вопросов по Word...
|
|||
|---|---|---|---|
|
#18+
На счет записи макросов - я знаю об этом способе, но прикол в том что я руками этого сделать не могу... соответственно нечего в макрос писать... получается вопрос уже вроде как по ворду и мне на соотв. форум - там уже тоже спросил, но пока что ответа нет... по проблеме I.3 я уже одуплился - оказывается все поля что заполнены до выполнения команды защиты документа (m.loWord.ActiveDocument.Protect(2)) очищаются, а если после заполнить - то все ок. по проблеме II.1.1. кое-что еще можно сделать - найти отдельные эелементы меню Файл. Но вот как запретить горячие клавиши - непонятно... опять же еси на панели будут кустомные значки сейва - я ж их не смогу убрать... оле мне не понравилось. короче решений пока что нет. нарыл тут тему про автомакросы. там как раз можно в момент закрытия ворда или его документа подмутить че хошь. к примеру сохранение куда-нить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2007, 23:51 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34590383&tid=1589160]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 378ms |

| 0 / 0 |
