Как выяснить что окно пора закрыть при завершении приложения

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
vd-vuf
Бывалый
Сообщения: 61
Зарегистрирован: 12 Декабрь 2008, 12:09
Откуда: Верхний Уфалей
Контактная информация:

Как выяснить что окно пора закрыть при завершении приложения

Сообщение vd-vuf »

Как выяснить что окно пора закрыть при завершении приложения
если окно открыто уже после cобытия EVENT:CloseDown
суть - есть глобальный класс, разрушение его происходит по Destruct
в работе класс юзает окна, и плюс к этому
во время разрушеня класс использует еще окна потому что нужен ACCEPT
(таймеры там работают записывается некая инфа в файлы)
тоесть пока незакроются окна от этого глобального класса
окна процедур через которые пишется инфа в файлы должны быть тоже открыты.

И еще, как незакрыть окно (продолжить ACCEPT) при наступлении события EVENT:CloseDown
но не запрещая это событие для других окон.
К примеру фрейм незакрывается если в другом окне на EVENT:CloseDown прописываем CYCLE

возможно есть некая инфа в клаше по этому поводу, ориентируясь на которую можно бы это разрулить
(разрушиь класс до EVENT:CloseDown - неустраивает)
Аватара пользователя
StillZero
Ветеран
Сообщения: 458
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Поблагодарили: 1 раз
Контактная информация:

Re: Как выяснить что окно пора закрыть при завершении приложения

Сообщение StillZero »

я не понял о чем речь :)
кажется, что дело в не в ловле события, а в организации класса, тут возможно необходим еще один класс, который будет работать в самом окне и глобальная очередь окон, ...
по аэродрому...
vd-vuf
Бывалый
Сообщения: 61
Зарегистрирован: 12 Декабрь 2008, 12:09
Откуда: Верхний Уфалей
Контактная информация:

Re: Как выяснить что окно пора закрыть при завершении приложения

Сообщение vd-vuf »

решилось просто :)
привожу урезанный код

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

SavedLogClass.Ask  PROCEDURE
SSMessageslog     FILE,DRIVER('ASCII'),CREATE
R                    RECORD
Line                  STRING(SAVED_LOG_LINE_SIZE)
                    END
                  END
SaveLog_Window WINDOW,AT(-1,-1,1,1),TIMER(20),IMM,GRAY,TOOLBOX,DOUBLE ! ,TOOLBOX
     END
Lok:Thr           LONG
Lok:I             LONG
Loc:TimerOutDate  LONG
Loc:CurrDate      LONG
  CODE
  Loc:CurrDate = TODAY()
  Lok:Thr = THREAD()
  DO LocOpenFile
  SELF.SSLog.RegisterLogFile(SELF.LogFilePref, Lok:Thr, SELF.DisableLog)
! ларчик просто открывался
  LOOP
    DO LocAcceptWindow
    IF Glo:FileLogProcessKill = 1 THEN BREAK.
  END
!
  DO SaveLogToFile
  SELF.SSLog.UnRegisterLogFile(SELF.LogFilePref)
  CLOSE(SSMessageslog)
  RETURN
LocAcceptWindow ROUTINE
  OPEN(SaveLog_Window)
  ACCEPT
    CASE EVENT()
    OF EVENT:OpenWindow
      Lo# = SaveLog_Window{PROP:Handle}
      r#  = ShowWindow(Lo#,0)
    OF EVENT:Timer
      DO SaveLogToFile
      IF Glo:FileLogProcessKill = 1 THEN BREAK.
    OF EVENT:CloseDown OROF EVENT:CloseWindow 
      BREAK
    END
  END
  CLOSE(SaveLog_Window)
Ответить