|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
    Пользовательские окна-рамки интерфейса работы с документами (MDI), представляемые объектом TDMIWindow, представляют собой перекрываемые окна, которые используются в качестве основных окон прикладной программы MDI. Одним из основных средств объекта TDMIWindow является его собственный объект TMDIClient и сохранение его в поле ClientWnd. Другое средство - это меню дочернего окна, предлагающее возможности для работы с дочерними окнами приложения MDI. Для отражения всех выводимых на экран дочерних окон это окно автоматически получает уведомление.
    ChildMenuPos определяет индекс, задающий позицию
управляющего меню дочернего окна. В индексе учитываются только элементы
верхнего уровня, а верхний левый элемент занимает нулевую
позицию.
    ClientWnd указывает на обрамляющее окно (окно-рамку) окна
клиента MDI, экземпляр объекта TMDIClient.
    Ниже описываются методы, определенные в данном объекте.
    Строит объект окна-рамки MDI, используя заданный заголовок
ATitle и меню, переданное в AMenu. Окна-рамки MDI требуют наличия
меню. Окна-рамки не имеют порождающего окна и должны быть
основным окном приложения. По умолчанию Init устанавливает
ChildMenuPos в ноль, указывая, что меню дочернего окна - это меню
верхнего уровня. Чтобы модифицировать ChildPos, переопределите в
наследующих типах TMDIWindow.Init, например:
    См. также: TMDIWindow.InitClientWindow.
    Строит и загружает окно-рамку MDI из потока S, вызывая
сначала TWindow.Load, а затем получая и считывая дополнительные поля
(ClientWnd и ChildMenuPos), введенные в TMDIWindow.
    См. также TWindow.Load.
    Перед вызовом для уничтожения оконного объекта окна-рамки
MDI наследуемого из TWindow деструктора Done уничтожает объект
окна клиента MDI, записанный в ClientWnd.
    См. также: TWindow.Done.
    Упорядочивает порожденные окна MDI с пиктограммами в нижней
части пользовательского окна MDI. Вызывает метод
ClientWnd^.ArrangeIcons.
    См. также: TMDIClient.ArrangeIcons.
    Настраивает размер и упорядочивает все безпиктограммные
(неминимизированные) дочерние окна MDI в окне клиента MDI, так что
они перекрываются и выводится заголовок каждого окна. Вызывает
ClientWnd^.CascadeChildren.
    См. также: TMDIClient.CascadeChildren.
    Завершает все созданные дочерние окна MDI, для которых
CanClose возвращает True.
    См. также: TWindow.CanClose.
    Вызывая ArrangeIcons, отвечает на выбор меню с
идентификатором cm_ArrangeIcons.
    См. также: TDMIWindow.ArrangeIcons.
    Вызывая CascadeChildren, отвечает на выбор меню с
идентификатором cm_CascadeChildren.
    См. также: TDMIWindow.CascadeChildren.
    Вызывая CreateChild, отвечает на выбор меню с
идентификатором cm_CloseChildren.
    См. также: TDMIWindow.CreateChild.
    Вызывая TileChildren, отвечает на выбор меню с
идентификатором cm_TileChildren.
    См. также: TDMIWindow.InitChild.
    Вызывая InitChild и MakeWindow, строит и создает новое
дочернее окно MDI. Вам нужно переопределить CreateChild, для
наследующих дочерних оконных типов MDI аналогично
TMDIWindow.InitChild. CreateChild возвращает указатель на новое
порожденное окно MDI.
    См. также: TDMIWindow.InitChild, TApplication.MakeWindow.
    Переопределяет выполняемую по умолчанию в TWindow обработку
сообщений Windows, вызывая вместо DefWindowProc функцию Windows
DefFrameProc.
    Возвpащает имя класса окна Windows объекта TDMIWindow
'TurboMDIWindow'.
    Возвращает указатель на окно клиента MDI, сохраненное в
ClientWnd.
    Модифицирует используемую по умолчанию запись класса окна и
передает ее обратно в AWndClass. GetWindowClass устанавливает
поле стиля в 0 и удаляет стили, установленные
TWindow.GetWindowClass.
    См. также: TWindow.GetWindowClass.
    Строит объект дочернего окна MDI (TWindow) с заголовком 'MDI
Child' и возвращает указатель на него. Если вы определите тип
дочернего окна MDI, наследующий из TWindow, для построения окна
своего нового дочернего оконного типа MDI переопределите
TMDIWindow.InitChild, например:
    См. также: TDMIWindow.CreateChild.
    Строит окно клиента MDI как экземпляр объекта TMDIClient,
сохраняя его в ClientWnd.
    Строит окно клиента MDI (ClientWnd) соответствующего
оконного элемента объекта, вызывая InitClientWindow, и создает его с
помощью вызова MakeWindow. Если вы в наследующем типе
переопределите SetupWindow, убедитесь в наличии явного вызова
TDMIWindow.SetupWindow.
    См. также: TMDIWindow.InitClientWindow,
TApplication.MakeWindow.
    Сохраняет окно MDI в потоке S, вызывая сначала
TWindow.Store, а затем помещая и записывая дополнительные поля
(ClientWnd и ChildMenuPos), введенные в TMDIWindow.
    См. также: TWindow.Store.
    Вызывая ClientWnd^.TileChildren, настраивает размер и
упорядочивает все безпиктограммные дочерние окна MDI в окне клиента
MDI, так что будет использовано без перекрытия все доступное
пространство.
    См. также: TMDIClient.TileChildren.
Поля
ChildMenuPos: Integer;
ClientWnd: PMDIClient;
Методы
Init (часто переопределяется)
constructor Init(ATitle: PChar; AMenu: HMenu);
constructor MyMDIWindow.Init(ATitle: PChar; AMenu: HMenu);
begin
TMDIWindow.Init(ATitle, AMenu);
ChildMenuPos := 3;
end;
Load
constructor Load(var S: TStream);
Done (иногда переопределяется)
destructor Done; virtual;
ArrangeIcons (переопределяется редко)
procedure ArrangeIcons;
CascadeChildren (переопределяется редко)
procedure CascadeChildren;
CloseChildren (переопределяется редко)
procedure CloseChildren;
CMArrangeIcons (переопределяется редко)
procedure CMArrangeIcons(var Msg: TMessage); virtual
cm_First + cm_ArrangeIcons;
CMCascadeChildren (переопределяется редко)
procedure CMCascadeChildren(var Msg: TMessage); virtual
cm_First + cm_CascadeChildren;
CMCreateChild (никогда не переопределяется)
procedure CMCreateChild(Msg: TMessage); virtual
cm_First + cm_CloseChildren;
CMTileChildren (переопределяется редко)
procedure CMTileChildren(var Msg: TMessage); virtual
cm_First + cm_TileChildren;
CreateChild
function CreateChild: PTWindowObject; virtual;
DefWndProc
procedure DefWndProc(var Msg: TMessage); virtual;
GetClassName (иногда переопределяется)
function GetClassName: PChar; virtual;
GetClient (никогда не переопределяется)
function CetClient: PTMDIClient; virtual;
GetWindowClass (иногда переопределяется)
procedure GetWindowClass(var AWndClass: TWndClass); virtual;
InitChild (часто переопределяется)
function InitChild: PTWindowsObject; virtual;
function MyMDIWindow.InitChild: PWindowsObject;
begin
InitChild := New(PMyMDIChild, Init(@Self,
'Окно без заголовка');
end;
InitClientWindow (иногда переопределяется)
procedure InitClientWindow; virtual;
SetupWindow (часто переопределяется)
procedure SetupWindow; virtual;
Store
procedure Store(var S: TStream);
TileChildren (переопределяется редко)
procedure TileChildren;