|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
Есть форма, на которой лежит OleContainer OCMain. У него свойство Align:=alClient Как сделать, чтоб при изменении размеров формы корректно изменял размер контейнера? Сейчас при ресайзе формы белый лист ворда с содержимым остается прежнего размера - как на вложенном изображении. Код: pascal 1. 2. 3. 4. 5. 6. 7.
И еще - как запретить редактирование документа? Строка Код: pascal 1.
в зависимости от места расположения в коде открытия файла в олеконтейнере, то вызывает ошибку "интерфейс не поддерживает метод протект", то вызывает "сбой при удаленном вызове процедуры". ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2021, 01:12 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
GrigoriyFomin, 1. вот нафига тебе этот глючный олеконтейнер, используй ворд как сом-сервер, как все люди. 2. Ворд документ может быть открыт с флагом ReadOnly. 3. Ворд документ имеет свойство Final, установи его в True. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2021, 01:52 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
ъъъъъ, ну я просто другого способа отображать содержимое форда в СВОЕМ окне не знаю, поэтому его и использую. А можно как-то по-другому? Мне надо в моем окне показывать ворд без его панелей с моей собственной панелью инструментов ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2021, 11:55 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
Передавай в контейрер события ресайза и там внутри его обрабатывай. Это если контейнер самописный. Если нет - ищи его методы для ресайза. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2021, 16:17 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
GrigoriyFomin, вообще, TOleControl сам следит за размером ищите в Vcl.OleCtrls Код: pascal 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2021, 10:20 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
Здравствуйте, решил не плодить тем, спрошу тут. Много часов пытаюсь побудить - не получается, перегуглил все, что можно. Задача - сохранить вордовский документ с паролем на открытие: Код: pascal 1. 2. 3. 4. 5. 6. 7.
уж как я только не пробовал, и через SaveAs, и просто Save. Изменения в файле сохраняются, пароль - нет. Макросы VBA говорят, что я все делаю правильно. Что я не учел? Спасибо заранее ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 02:28 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
GrigoriyFomin, а так : document.Protect(Password := yourPassword); document.SaveAs(yourFileName); document.Close; ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 09:44 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
peter64 GrigoriyFomin, а так : document.Protect(Password := yourPassword); document.SaveAs(yourFileName); document.Close; он требует еще один обязательный параметр Type. Код: pascal 1.
и он защищает только от модификации, сам документ при любом типе будет виден. Ни в какую не воспринимает пароль при SaveAs2. Хоть бери сами ворды жмакай GZip и паролируй... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 14:05 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
может после SaveAs2 нужно еще какие-то методы вызвать? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 14:16 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
Не ,это какое-то издевательство от ворда. Делаю так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Он, зараза, пароль на запись сохраняет, при открытии документа спрашивает пароль на запись либо открыть в режиме только чтения. Как с ним бороться? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 14:35 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
GrigoriyFomin, в доке пишут https://docs.microsoft.com/en-us/office/vba/api/word.saveas2#example] про WdProtectionType так: wdAllowOnlyComments 1 (Разрешите добавление только примечаний в документ.) wdAllowOnlyFormFields 2 (Разрешить добавление контента в документ только с помощью полей формы.) wdAllowOnlyReading 3 (Разрешение доступа к документу только для чтения.) wdAllowOnlyRevisions 0 (Разрешить только изменения существующего контента.) wdNoProtection -1 (Не применяйте защиту к документу.) и пример на VB : Sub SaveWithPassword(docCurrent As Document, strPWD As String) With docCurrent .SaveAs2 WritePassword:=strPWD End With End Sub ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 14:39 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
Самоочевидная идея - сразу открывать только на чтение - не работает?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 14:40 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, у меня типа своя система хранения документов. Копирую пустую болванку на нужное место, открываю ее в олеконтейнере, пользоваитель в ней работает, вносит свои тексты и нажимает мое ""Сохранить". И тут я этот документ должен сохранить уже с паролем, чтоб никто не смог его открыть и ЧИТАТЬ. Получается только сохранить с паролем на сохранение, а пароль на открытие - игнорится. Метод Protect не дает желаемого результата - он защищает документ от модификации, но открыть его для чтения - никаких проблем ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 15:03 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
peter64 GrigoriyFomin, Sub SaveWithPassword(docCurrent As Document, strPWD As String) With docCurrent .SaveAs2 WritePassword:=strPWD End With End Sub то работает, но документ открыть можно в режиме "только чтение". Мне надо, чтоб его без пароля вообще открыть нельзя было. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 15:05 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
Не поможет? https://docs.microsoft.com/ru-ru/office/vba/api/word.wdsaveformatwdFormatEncodedText 7 Кодированный текстовый формат. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 15:12 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
GrigoriyFomin, А покажите макрос, который сохраняет правильно ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 15:13 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
_Vasilisk_, Код: pascal 1. 2. 3. 4. 5. 6. 7.
Я все эти поля перенес - все равно не сохраняется пароль на открытие Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 15:34 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
GrigoriyFomin, посмотри тут (правда C#) https://www.codeproject.com/Questions/672736/How-to-password-protect-a-MS-Word-doc-or-docx-file ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 15:56 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
peter64, там очень сложно, я пробовал кусками от код, например, wd.password:='MyPass' ничего не меняет. Такое ощущение, что либо чего-то не хватает, то ли что-то не доделываю.... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 17:04 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
господа, не дайте разочароваться в дельфи, 25 лет на ней, неужели ничего нельзя сделать с паролированием файла ворда? пора, видимо, в вэб уходить переучиваться.... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 19:02 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
GrigoriyFomin там очень сложно, я пробовал кусками от код, например, wd.password:='MyPass' ничего не меняет. Такое ощущение, что либо чего-то не хватает, то ли что-то не доделываю.... Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Проверил, макрос работает. Повтори в виде OLE, да и все. GrigoriyFomin господа, не дайте разочароваться в дельфи, 25 лет на ней, неужели ничего нельзя сделать с паролированием файла ворда? пора, видимо, в вэб уходить переучиваться.... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 19:22 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
GrigoriyFomin господа, не дайте разочароваться в дельфи, 25 лет на ней, неужели ничего нельзя сделать с паролированием файла ворда? пора, видимо, в вэб уходить переучиваться.... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 20:21 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
Все работает... Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Запрашивает пароль... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 20:24 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
Привет. GrigoriyFomin господа, не дайте разочароваться в дельфи, 25 лет на ней, неужели ничего нельзя сделать с паролированием файла ворда? пора, видимо, в вэб уходить переучиваться.... Вот фрагменты из какого-то старого проекта: Защита паролем: Код: sql 1.
Снятие защиты: Код: pascal 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 20:34 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
Однако, если сделать так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8.
То не работает. Кажется, что Word как самостоятельное приложение и Word как объект в контейнере ведут себя по разному... Учитывая что можно словить такое: Код: pascal 1.
Project Project2.exe raised exception class EOleException with message 'Метод или свойство Add недоступны, потому что данный документ находится в другом приложении'. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 20:36 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
X-Cite Однако, если сделать так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8.
То не работает. Кажется, что Word как самостоятельное приложение и Word как объект в контейнере ведут себя по разному... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 20:57 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
Из нюансов.. Код: pascal 1. 2. 3. 4.
В OleObject лежит WordDocument он же _Document При чем, когда документ самостоятельный, то работает даже так (указываем пароль как атрибут документа, а при сохранении игнорируем параметр) Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Но такой же способ когда word в контейнере - не работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 20:59 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
и таки да.. Word самостоятельный это: Word.Application с CLSID {000209FF-0000-0000-C000-000000000046} Word в контейнере это Word.Document с CLSID {F4754C9B-64F5-4B40-8AF4-679732AC0607} Описания этого CLSID не нашел.. Также его нет в TLB При чем легко работает такой каст: Код: pascal 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 21:18 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
X-Cite {000209FF-0000-0000-C000-000000000046} X-Cite {F4754C9B-64F5-4B40-8AF4-679732AC0607} ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2021, 22:20 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
X-Cite Но такой же способ когда word в контейнере - не работает. Больше вызывает недоумение, почему в методе SaveAs2 параметр Password не срабатывает, а WritePassword - отрабатывает. Этож просто 2 параметра одной функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2021, 00:46 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
Вообщем, по совету ответивших пользователей накрапал такой рабочий код: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Правда, теперь после отработки кода появляются 3 таких сообщения в логе IDE: Код: plaintext 1.
И теперь сам же породил новую проблему - как загрузить закриптованный файл ворда через CreateObjectFromFile??? Опять снимать пароль через костыль в виде App := CreateOleObject('Word.Application'); ? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2021, 01:56 |
|
OleContainer - как обновлять при ресайзе формы
|
|||
---|---|---|---|
#18+
GrigoriyFomin почему в методе SaveAs2 параметр Password не срабатывает, а WritePassword - отрабатывает. Этож просто 2 параметра одной функции. GrigoriyFomin Опять снимать пароль через костыль в виде App := CreateOleObject('Word.Application'); ? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2021, 20:53 |
|
|
start [/forum/topic.php?all=1&fid=58&tid=2037045]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 162ms |
0 / 0 |