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

Открыть окно по размеру ClientArea главного окна

Добавлено: 11 Апрель 2019, 12:17
morkovin
1. После запуска программы и открытия основного окна запускается Browse-процедура. Как сделать, чтобы это окно открылось по размеру клиентской области фрейма. Может есть такой темплэйт?
2. После закрытия Browse-процедуры должна закрыться и программа-родитель. Как проще сделать?

Открыть окно по размеру ClientArea главного окна

Добавлено: 11 Апрель 2019, 12:48
Constantine
1. А Initial Size - Maximized или 0{PROP:MAXIMIZE} для окна Browse не катит?
2. Post(EVENT:CloseWindow,GLO:FrameThread)

Открыть окно по размеру ClientArea главного окна

Добавлено: 11 Апрель 2019, 12:49
Дед Пахом
1. взять размеры клиентской области фрейма и присвоить их окну. Тут, безусловно, нужен шаблон.
2. можно послать фрейму событие "CloseDown"

Открыть окно по размеру ClientArea главного окна

Добавлено: 11 Апрель 2019, 13:14
morkovin
идея в том, чтобы сделать "one procedure programm". юзер должен считать , что просто вызвал процедуру из своей программы.

Открыть окно по размеру ClientArea главного окна

Добавлено: 11 Апрель 2019, 13:40
morkovin
Post(EVENT:CloseWindow,GLO:FrameThread)
делаю в основном окне
GLO:FrameThread = thread()
и методе Kill для browse-proc
Post(EVENT:CloseWindow,GLO:FrameThread)
и ничего не происходит при закрытии процедуры (по "крестику" или по кнопке)

Открыть окно по размеру ClientArea главного окна

Добавлено: 11 Апрель 2019, 13:43
kreator
morkovin, у нас есть такое. Из фрейма вызывается обычное окно без mdi с опцией Maximize (или как там называется). Оно перекрывает фрейм полностью.

Открыть окно по размеру ClientArea главного окна

Добавлено: 11 Апрель 2019, 13:45
kreator
morkovin писал(а): 11 Апрель 2019, 13:40
Post(EVENT:CloseWindow,GLO:FrameThread)
делаю в основном окне
GLO:FrameThread = thread()
и методе Kill для browse-proc
Post(EVENT:CloseWindow,GLO:FrameThread)
и ничего не происходит при закрытии процедуры (по "крестику" или по кнопке)
По-моему это делать вообще не надо. Очень надо запустить процедуру через start?

Открыть окно по размеру ClientArea главного окна

Добавлено: 11 Апрель 2019, 13:48
Yufil
Что-то такое

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

!  Переходим в тред фрейма
    SETTARGET(,1) 
! Метрики в пикселах 
   0{ Prop:Pixels} = TRUE 
!  Получаем размеры 
   FrameClientWidth = 0{Prop:ClientWidth} 
   FrameClientHeight = 0{Prop:ClientHeight} 
!  Вернём как было 
   0{Prop:Pixels} = FALSE 
   SETTARGET()
!  То же самое для текущего окна 
   0{prop:Pixels} = TRUE 
   SETPOSITION( 0, 0, 0, FrameClientWidth, FrameClientHeight ) 
   0{Prop:Pixels} = FALSE 

Открыть окно по размеру ClientArea главного окна

Добавлено: 11 Апрель 2019, 13:53
Yufil
А с закрытием программы-родителя см. команду HALT :D
Или Post(Event:CloseWindow,,1)

Открыть окно по размеру ClientArea главного окна

Добавлено: 11 Апрель 2019, 13:54
morkovin
1. А Initial Size - Maximized или 0{PROP:MAXIMIZE} для окна Browse не катит?
обычное окно без mdi с опцией Maximize (или как там называется). Оно перекрывает фрейм полностью.
Вообще во весь экранище открывается... не очень удобно

Открыть окно по размеру ClientArea главного окна

Добавлено: 11 Апрель 2019, 13:59
kreator
Тогда просто Maximize. А закрыть фрейм вообще очень просто. Во фрейме нужно узнать thread броуза (при запуске этого броуза можно сделать). В таймере фрейма проверять эту переменную. Как только стала нулём, закрываем фрейм.

Открыть окно по размеру ClientArea главного окна

Добавлено: 11 Апрель 2019, 14:00
morkovin
Очень надо запустить процедуру через start?
Да. Это окно FrbReportManager. Если без Start, то далее будет GPF
Или Post(Event:CloseWindow,,1)
Спасибо! Работает!

Открыть окно по размеру ClientArea главного окна

Добавлено: 11 Апрель 2019, 14:39
morkovin
! Переходим в тред фрейма
SETTARGET(,1)
! Метрики в пикселах
....
Спасибо! Работает!
! То же самое для текущего окна
0{prop:Pixels} = TRUE
SETPOSITION( 0, 0, 0, FrameClientWidth, FrameClientHeight )
0{Prop:Pixels} = FALSE
Надо вставлять после Initialize resizer

Открыть окно по размеру ClientArea главного окна

Добавлено: 12 Апрель 2019, 10:33
gopstop2007
закрыть frame и все окна(о) можно проще - PRESSKEY(AtlF4)

окно по размеру, вот рабочий фрагмент кода:

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

WindChild WINDOW,AT(0,0,573,325),FONT('Tahoma',9,,FONT:regular,CHARSET:DEFAULT),NOFRAME,MAXIMIZE, |
          ALRT(EscKey),COLOR(00FFFFF0h),IMM,MDI
          
          
          END

Открыть окно по размеру ClientArea главного окна

Добавлено: 12 Апрель 2019, 13:26
Yufil
А ещё проще написать HALT() - и всё закроется. Кстати, самый лучший вариант, POST могут быть перехвачены или не сработать, вдруг я из фрейма вызвал формочку без START'а .