Выбор дочерних MDI-окон с помощью набора закладок TabSet
По всей видимости, дочерние MDI-окна не отвечают на те же
сообщения Windows, которые обрабатываются другими окнами. Ниже приведен способ
выбора определенного дочернего MDI-окна таким образом, чтобы оно стало активным.
Я читаю значение из компонента TINIFile и активизирую определенное дочернее
MDI-окно:
{
Делаем активным дочернее MDI-окно. Мы должны
послать сообщение Windows API, поскольку
дочернее MDI-окно может реагировать только
на "аварийный" набор системных сообщений.
}
i := ReadInteger( 'Main', 'ActiveMDIChild', -1 )
IF (i>=0) AND (i<MDIChildCount) THEN
POSTMESSAGE( Self.Handle, WM_MDIACTIVATE,
MDIChildren[i].Handle, 0 )
|
MDI-формы обрабатываются другим обработчиком по-умолчанию
(defMDIProc). Способов сделать это (см. заголовок) существует несколько.
Дочерние Mdi-формы являются частью массива с именем (как ни странно)
MDIChildren. Вы можете сделать так.....
For i := 0 To Form1.MDIChildCount - 1 Do
begin
If Form1.MDIChildren[i].Caption = 'Это первый!' Then
{Здесь можно активизировать дочернюю MDI-форму
или выполнить какие-либо действия}
end;
|
MDIChildren[x] - указатель на экземпляр дочерней MDI-формы. Использование
операторов IS и AS позволит вам иметь доступ к любым свойствам и методам любой
дочерней формы.
- При открытии файла в набор Tabset добавляется новая закладка Tab, а ее
заголовок ("caption") устанавливается равным имени открытого файла. Затем форма
с помощью команды Tabset.AddObject добавляется как объект к tabset.
- При щелчке на tabset, чтобы иметь доступ к верному файлу, я использую
следующий код:
TForm(TabsSet.Items.Objects[TabSet.TabIndex]).Show;
|
|