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

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
morkovin
Ветеран
Сообщения: 594
Зарегистрирован: 20 Июль 2005, 13:53
Откуда: Volgograd, Russia
Контактная информация:

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

Сообщение morkovin » 11 Апрель 2019, 12:17

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

Constantine
Бывалый
Сообщения: 90
Зарегистрирован: 07 Февраль 2017, 16:58

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

Сообщение Constantine » 11 Апрель 2019, 12:48

1. А Initial Size - Maximized или 0{PROP:MAXIMIZE} для окна Browse не катит?
2. Post(EVENT:CloseWindow,GLO:FrameThread)

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2212
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

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

Сообщение Дед Пахом » 11 Апрель 2019, 12:49

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

Аватара пользователя
morkovin
Ветеран
Сообщения: 594
Зарегистрирован: 20 Июль 2005, 13:53
Откуда: Volgograd, Russia
Контактная информация:

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

Сообщение morkovin » 11 Апрель 2019, 13:14

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

Аватара пользователя
morkovin
Ветеран
Сообщения: 594
Зарегистрирован: 20 Июль 2005, 13:53
Откуда: Volgograd, Russia
Контактная информация:

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

Сообщение morkovin » 11 Апрель 2019, 13:40

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

kreator
Ветеран
Сообщения: 3153
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

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

Сообщение kreator » 11 Апрель 2019, 13:43

morkovin, у нас есть такое. Из фрейма вызывается обычное окно без mdi с опцией Maximize (или как там называется). Оно перекрывает фрейм полностью.
We are hard at work… for you. :)

kreator
Ветеран
Сообщения: 3153
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

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

Сообщение kreator » 11 Апрель 2019, 13:45

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

Yufil
Ветеран движения
Сообщения: 1090
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

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

Сообщение Yufil » 11 Апрель 2019, 13:48

Что-то такое

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

!  Переходим в тред фрейма
    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 

Yufil
Ветеран движения
Сообщения: 1090
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

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

Сообщение Yufil » 11 Апрель 2019, 13:53

А с закрытием программы-родителя см. команду HALT :D
Или Post(Event:CloseWindow,,1)

Аватара пользователя
morkovin
Ветеран
Сообщения: 594
Зарегистрирован: 20 Июль 2005, 13:53
Откуда: Volgograd, Russia
Контактная информация:

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

Сообщение morkovin » 11 Апрель 2019, 13:54

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

kreator
Ветеран
Сообщения: 3153
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

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

Сообщение kreator » 11 Апрель 2019, 13:59

Тогда просто Maximize. А закрыть фрейм вообще очень просто. Во фрейме нужно узнать thread броуза (при запуске этого броуза можно сделать). В таймере фрейма проверять эту переменную. Как только стала нулём, закрываем фрейм.
We are hard at work… for you. :)

Аватара пользователя
morkovin
Ветеран
Сообщения: 594
Зарегистрирован: 20 Июль 2005, 13:53
Откуда: Volgograd, Russia
Контактная информация:

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

Сообщение morkovin » 11 Апрель 2019, 14:00

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

Аватара пользователя
morkovin
Ветеран
Сообщения: 594
Зарегистрирован: 20 Июль 2005, 13:53
Откуда: Volgograd, Russia
Контактная информация:

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

Сообщение morkovin » 11 Апрель 2019, 14:39

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

gopstop2007
Ветеран
Сообщения: 1201
Зарегистрирован: 25 Март 2009, 21:55

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

Сообщение gopstop2007 » 12 Апрель 2019, 10:33

закрыть 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
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

Yufil
Ветеран движения
Сообщения: 1090
Зарегистрирован: 16 Май 2006, 13:34
Контактная информация:

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

Сообщение Yufil » 12 Апрель 2019, 13:26

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

Ответить