Pascal 7 & Objects

       

Выполнение безрежимных диалоговых блоков


-----------------------------------------------------------------

Безрежимные диалоги похожи на всплывающие окна и управляющие элементы. Основная причина, по которой вы не можете удалять без- режимными диалогами сразу же после их отработки (в отличие от ре- жимных), состоит в том, что вы заранее не знаете, когда пользова- тель закроет блок диалога. (Помните о том, что в режимных диало- гах метод ExecDialog не возвращает значения до закрытия диалога.) Следовательно лучше всего конструировать безрежимные диалоги в конструкторе его порождающего окна и хранить в поле порождающего объекта.

В отличие от окон и объектов управления, используемых в ка- честве дочерних окон, диалоги автоматически не отображаются при выводе их порождающих окон.

constructor ParentWindow.Init(AParent: PWindowsObject; ATitle: PChar); begin TWindow.Init(AParent, ATitle); ADlg := New(PSampleDialog, Init(@Self, 'EMPLOYEEINFO')); end;

Затем, каждый раз, когда вы хотите отобразить диалог, соз- дайте и выведите его:

begin Application^.MakeWindow(ADlg) end;

И, наконец, отдельный объект диалога будет автоматически удаляться при закрытии его порождающего окна.



Содержание раздела