|
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 |
|
|
start [/forum/topic.php?fid=58&startmsg=40093584&tid=2037045]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 261ms |
total: | 415ms |
0 / 0 |