Выбор дочерних MDI-окон с помощью набора закладок TabSet

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

По всей видимости, дочерние MDI-окна не отвечают на те же сообщения Windows, которые обрабатываются другими окнами. Ниже приведен способ выбора определенного дочернего MDI-окна таким образом, чтобы оно стало активным. Я читаю значение из компонента TINIFile и активизирую определенное дочернее MDI-окно:

{

Делаем активным дочернее MDI-окно. Мы должны

послать сообщение Windows API, поскольку

дочернее MDI-окно может реагировать только

на «аварийный» набор системных сообщений.

}

i := ReadInteger( ‘Main’, ‘ActiveMDIChild’, -1 )

IF (i>=0) AND (i

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;

{/codecitation}

Добавить комментарий