Вы меня не слышите! Когда Ворд закрыли, проблем нет.
Ворд ЗАБЫЛИ закрыть и файл создают второй раз. Ворд открывается второй раз, а файл с тем же именем. Файл с тем же именем весит открытый в первом ворде. Надо в этом случае прервать Клашку.
Модератор: Дед Пахом
Вы меня не слышите! Когда Ворд закрыли, проблем нет.
Да вы правы, что можно поменять имя, но как его менять? На любом открытии давать новое имя или давать новое имя когда "файл уже занят другим Вордом". Я думаю что второй вариант более правильный.gromov писал(а): 02 Апрель 2022, 0:23 А вы читаете, что вам пишут или как ? Открывайте файл с УНИКАЛЬНЫМ ИМЕНЕМ.
Данное сообщение формируется при попытке выполнения вот этой команды и только тогда когда файл уже занят другим Вордом:mpn2 писал(а): 02 Апрель 2022, 10:36 Я вам еще раз говорю: сама Клашка знает, что "файл уже занят другим Вордом", потому как она дает сообщение:
Сообщение: "Данная команда недоступна".
По какому критерию она это сообщение сделала ????
Код: Выделить всё
MSWord1.Control{'Application.Selection.Find.Execute("'&clip(Loc:F_Str)&'", , , , , , 1, 1, , "'&clip(Loc:R_Str)&'", 2)'}
"Клашка" ничего не знает ни о Ворде, ни о файлах в нём открытых, и сообщение это посылает не она.mpn2 писал(а): 02 Апрель 2022, 10:36 Я вам еще раз говорю: сама Клашка знает, что "файл уже занят другим Вордом", потому как она дает сообщение: Сообщение: "Данная команда недоступна". По какому критерию она это сообщение сделала???? Вот и весь вопрос... только нужен ответ.
Мы не знаем, что у Вас используется в качестве шаблона ...
Дед Пахом писал(а): 02 Апрель 2022, 11:28 "Клашка" ничего не знает ни о Ворде, ни о файлах в нём открытых, и сообщение это посылает не она.
Спасибо! как нибудь обязательно ваш пример посмотрю, а пока у меня *.app без *.dct не открывается.kreator писал(а): 02 Апрель 2022, 18:49 Раз такая беда, mpn2, качайте пример - viewtopic.php?p=28210#p28210.
Код: Выделить всё
MSWord1.Control{'Application.Selection.Find.Execute("'&clip(Loc:F_Str)&'", , , , , , 1, 1, , "'&clip(Loc:R_Str)&'", 2)'}
Message(ErrorCode())
Код: Выделить всё
Replac_String ROUTINE
MSWord1.Control{'Selection.Find.ClearFormatting'}
MSWord1.Control{'Selection.Find.Replacement.ClearFormatting'}
MSWord1.Control{'Application.Selection.Find.Execute("'&clip(Loc:F_Str)&'", , , , , , 1, 1, , "'&clip(Loc:R_Str)&'", 2)'}
if ErrorCode() = 5 then ! Если файл уже открыт
Message('Данный файл уже открыт! Процедура будет прервана!!!') ! Ругаемся
Destroy(MSWord1.Control) ! Уничтожили OLE-контрол
do ProcedureReturn ! Прерываем процедуру
.
Exit
Требование словаря в проекте можно отключить в настройке (см. рисунок).
Ага, спасибо!Игорь Столяров писал(а): 03 Апрель 2022, 19:24 Требование словаря в проекте можно отключить в настройке (см. рисунок).
А в остальном - я с Вами полностью согласен ...![]()
Код: Выделить всё
#!Создаем контрольные поля на кнопке -----------------------------
#PROMPT('Имя файла:', FILE), %PosFile, REQ
#PROMPT('Ключ чтения записи', KEY), %PosKey, REQ
#PROMPT('Процедура Insert:', @s9), %INS, default('?Insert')
#!----------------------------------------------------------------
#!------------------- Фиксируем поля -----------------------------
#AT(%AfterFileDeclarations)
#FIX(%File, %Primary)
????????????????????????? Что еще надо зафиксировать?
#ENDAT
#!----------------------------------------------------------------
#!------ Точка вставки на созданной кнопке -----------------------
#AT(%ControlEventHandling,%ButonControl,'Accepted')
!Код процедуры: Копирование записи (Начало-F5) ==================
GET(%PosFile,%PosKey) !Зачитаем зпись
Copy%FilePrefix = %FilePrefix:Record !Запомним запись ?????????????????????
POST(EVENT:Accepted,%INS) !Вызываем процедуру -=Insert=-
!=====================================================================
#ENDAT
Не ко мне. Игорь, темплатки клаши для веников не обучен делать. Совсем.
Помнится мне что достаточно:
Код: Выделить всё
#FIX(%File, %Primary)
! use %FilePrefix
Стоит начать пользоваться бекапами а лучше github
Не понимаю я вашу подсказку
Код: Выделить всё
Copy%FilePrefix = %FilePrefix:Record !Запомним запись
Код: Выделить всё
Copy = :Record !Запомним запись
Код: Выделить всё
CopySTR = STR:Record !Запомним запись