Советы по Delphi

         

Выбор дочерних 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 позволит вам иметь доступ к любым свойствам и методам любой дочерней формы.

  1. При открытии файла в набор Tabset добавляется новая закладка Tab, а ее заголовок ("caption") устанавливается равным имени открытого файла. Затем форма с помощью команды Tabset.AddObject добавляется как объект к tabset.

  • При щелчке на tabset, чтобы иметь доступ к верному файлу, я использую следующий код:
  •     TForm(TabsSet.Items.Objects[TabSet.TabIndex]).Show;

    [001781]



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