Распечатать страницу

Отображение формы, созданной программно VFP

« Назад

Получим прежде ссылку на объект oForm формы:

oForm = CreateObject("Form")

Отобразить форму (сделать ее видимой) позволяет ее метод Show или свойство Visible:

oForm.Show                       && или: Form.Visible = .T.

Однако две строки кода

oForm = CreateObject("Form")

oForm.Show

не приведут к появлению формы. Точнее она пропадет сразу после появления.

Устранить этот недостаток можно, объявив переменную oForm как глобальную:

public oForm

oForm = CreateObject("Form")

oForm.Show

либо использовав команду READ EVENTS, начинающую обработку событий:

on key label Alt+F1 clear events

oForm = CreateObject("Form")

oForm.Show

read events

wait "Обработка событий завершена" window nowait

Приведенный код гарантирует, что обработка событий будет завершена после нажатия на Alt+F1.

Команды READ EVENTS и CLEAR EVENTS употребляются при организации приложения в виде исполняемого EXE-файла (см. команду BUILD EXE).

Форма будет запущена без главного окна VFP, если ее свойству ShowWindow присвоить значение 2, а свойству Visible главного окна – .F. Поскольку на этапе исполнения свойство ShowWindow доступно только для чтения, то для достижения первой цели придется либо создать форму средствами проектировщика, либо ввести новый класс, например SomeForm, в котором определить значение рассматриваемого свойства:

on key label Alt+F1 clear events

_SCREEN.Visible = .F.

oForm = CreateObject("SomeForm")

oForm.Show

read events

define class SomeForm as Form

ShowWindow = 2

endDefine

Если форма запускается модально (переход в другие окна запрещен), то можно обойтись двумя операторами

oForm = CreateObject("Form")

oForm.Show(1)                   && Показываем форму модально

Замечание. Форма не будет создан, если событие Load вернет .F. При этом событие Destroy формы не выполняется.