Страница 1 из 1

Опция ABC Window: Only One Instance

Добавлено: 02 Июль 2025, 10:22
Игорь Столяров
Привет всем !

Кто-нибудь юзает (или знает как она работает) опцию 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. И всё. А что дальше - не совсем понятно. 🤷‍♀️
Может быть что-то нужно ещё включить ?
Спасибо !

Опция ABC Window: Only One Instance

Добавлено: 02 Июль 2025, 12:00
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)

Опция ABC Window: Only One Instance

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

На самом деле такая блокировка легко делается через STATIC GLOBAL QUEUE ... но думал может быть что-то интересное.
ВОПРОС РЕШЁН. У нас пока такая опция ClaHUB не импортозамещена. 😁✨👏

Опция ABC Window: Only One Instance

Добавлено: 02 Июль 2025, 13:23
kreator
Игорь Столяров писал(а): 02 Июль 2025, 12:10 У меня третий вариант: процедура находится в DLL и вызывается из EXE (который есстесно установки в DLL не видит).
Вот это непорядок. Так быть не должно. В ABCFree шаблонах есть такое. И вроде работает как надо.