Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Foxpro/Clipper/Dbase > Дочернии формы не отображаются


Автор: _GRIN_ 11.11.2008, 02:17
Я заранее прощу прощения, если данный вопрос уже где-то осветили, но поиск по форуму результата не дал. Поэтому открыл новую тему.

Вообщем есть главная форма (параметр ShowWindow = 2),
к ней привязана менюха
из менюхи вызывается дочерняя форма
(например в дизайнере меню примерно так)
Print | Command | DO FORM print

Нажимаю на кнопку меню и ... нифига - окошко не появляется (на всяк случай сворачивал всё чё было на экране),
но если попытаться закрыть прогу (закрыть главную форму) - то окошко сразу появляется, причём при закрытии доч. окошка 
главная форма сразу появляется, и только потом благополучно закрывается.

прога запускается из файла main.prg

Код

****************
* Main program *
****************
ON SHUTDOWN DO ExitProc && Set our procedure for exit

* Run the main form and establish the event loop
_SCREEN.Visible = .F.
DO FORM main_form
READ EVENTS
_SCREEN.Visible = .T.

ON SHUTDOWN && Reset our procedure for exit

*####################
PROCEDURE ExitProc
    CLEAR EVENTS
    RETURN 0

если просто запускать форму main_form кнопкой Run в менеджере проекта, то всё ок
может дело в вызове READ EVENTS в главной проге, но если вызов убрать, то форма сразу же закрывается и всё...

Автор: _GRIN_ 18.11.2008, 13:57
Ответ пришёл по почте:
на случай если кто идёт по моим следам smile (встретился с пободной траблой) приведу его здесь

Цитата

Скажите, а слово print  у вас - это имя формы??? Слово это зарезервираванно, назовите форму уж my_print.
Вообще должно работать без каких либо проблем DO FORM registration.
Для вашей главной формы поставьте WindowsType = 0, а для подчиненных форм – ShowWindow = 1, WindowsType = 1

С уважением, Ольга

Автор: wedmed 10.1.2009, 02:24
То есть форма "высокого уровня", я так понимаю.
Скорее всего дочерние окна не "высокого уровня", по умолчанию так оно и есть. А когда ты прячешь _screen, то все дочернии окна открываемые в main_form, открываются в среде FoxPro? то есть в _screen. Для проверки Попробуй не прятать _screen  и посмотри что на нем происходит когда создается дочерняя форма.
Для открытия дочерних форм, как "высокого уровня", я писал новый класс, всего три строчки.

define class myNewForm as Form
            ShowWindows=2
enddef

Теперь создавай дочернии формы от класса myNewForm

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)