Опция ABC Window: Only One Instance

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8069
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 29 раз
Поблагодарили: 97 раз

Опция ABC Window: Only One Instance

Сообщение Игорь Столяров »

Привет всем !

Кто-нибудь юзает (или знает как она работает) опцию Window как на рисунке:

1.jpg

Насколько я вижу:
1. Объявляется глобальная переменная:

Код: Выделить всё

GLO:oneInstance_ИМЯ ПРОЦЕДУРЫ_thread LONG(0)
2. В самой процеруре добавляется код:

Код: Выделить всё

  CODE
  GlobalResponse = ThisWindow.Run()                        ! Opens the window and starts an Accept Loop
  GLO:oneInstance_ИМЯ ПРОЦЕДУРЫ_thread = 0
3. И всё. А что дальше - не совсем понятно. 🤷‍♀️
Может быть что-то нужно ещё включить ?
Спасибо !
Make Clarion Great Again ! 😎
Аватара пользователя
ingasoftplus
Ветеран
Сообщения: 465
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)
Благодарил (а): 125 раз
Поблагодарили: 7 раз

Опция ABC Window: Only One Instance

Сообщение ingasoftplus »

Вы или не доглядели, или вызываете процедуру вручную.

Если процедура вызывается "через" шаблон - то будет сгенерирован код:
например

Код: Выделить всё

  OF ?AssetDisposal
    IF GLO:oneInstance_UpdAssetDisposal_thread = 0
       GLO:oneInstance_UpdAssetDisposal_thread = START(UpdAssetDisposal, 25000)
    ELSE
       NOTIFY(EVENT:GainFocus, GLO:oneInstance_UpdAssetDisposal_thread)
    END
вместо просто

Код: Выделить всё

START(UpdAssetDisposal, 25000)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8069
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 29 раз
Поблагодарили: 97 раз

Опция ABC Window: Only One Instance

Сообщение Игорь Столяров »

ingasoftplus писал(а): 02 Июль 2025, 12:00 Вы или не доглядели, или вызываете процедуру вручную.
Спасибо - я понял ... 👍
У меня третий вариант: процедура находится в DLL и вызывается из EXE (который есстесно установки в DLL не видит). 🤦‍♀️

На самом деле такая блокировка легко делается через STATIC GLOBAL QUEUE ... но думал может быть что-то интересное.
ВОПРОС РЕШЁН. У нас пока такая опция ClaHUB не импортозамещена. 😁✨👏
Make Clarion Great Again ! 😎
kreator
✯ Ветеран ✯
Сообщения: 5169
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Опция ABC Window: Only One Instance

Сообщение kreator »

Игорь Столяров писал(а): 02 Июль 2025, 12:10 У меня третий вариант: процедура находится в DLL и вызывается из EXE (который есстесно установки в DLL не видит).
Вот это непорядок. Так быть не должно. В ABCFree шаблонах есть такое. И вроде работает как надо.
We are hard at work… for you. :)
Ответить