PureBasic

MDIGadget()

Синтаксис

Result = MDIGadget(#Gadget , x , y , Width , Height , SubMenu , MenuItem [, Flags])

Описание


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

Параметры

#Gadget Номер для идентификации нового Гаджета. В качестве этого параметра можно использовать значение #PB_Any, чтобы сгенерировать этот Номер автоматически.
x, y, Width, Height Позиция и размеры нового Гаджета.
SubMenu Индекс меню, в который необходимо добавить элементы окна MDI.

Гаджет MDIGadget() всегда соединён с оконным меню (смотрите описание функции CreateMenu()). Поэтому Гаджет MDIGadget() можно разместить только в окне, у которого есть присоединённое меню. Гаджет даст пользователю возможность выбирать дочерние окна посредством одного из подменю окна. В качестве значения параметра 'SubMenu' вы должны задать индекс подменю (созданного с помощью функции MenuTitle()), куда эти элементы будут присоединены (первое подменю имеет индекс 0). Гаджет добавит в конце меню разделитель, после которого добавит по одному элементу на каждое отображаемое дочернее окно.
MenuItem Первый индекс пункта меню для использования в окнах MDI.

Гаджету потребуется набор идентификаторов элементов меню (смотрите описание параметра 'MenuID' функции MenuItem()), чтобы добавить эти элементы меню. В качестве значения параметра 'MenuItem' функции MDIGadget() вы должны задать наименьший Номер, который Гаджет может использовать с этой целью. Он будет использовать Номера больше этого при добавлении новых дочерних окон, поэтому вам понадобится запас как минимум на столько Номеров, сколько элементов (окон) вы планируете добавить. Рекомендуется использовать Номер больше всех идентификаторов меню вашей программы, для уверенности, что коллизии не будет.
Flags (дополн.) Флаги, позволяющие изменить поведение Гаджета. Этот параметр может быть комбинацией следующих значение (с помощью оператора '|'):
  #PB_MDI_AutoSize       : Гаджет автоматически подгонит свои размеры под родительское окно.
                           Если у вас нет других Гаджетов в окне, это полезная опция.
  #PB_MDI_BorderLess     : Не рисовать границу вокруг клиентской области.
  #PB_MDI_NoScrollBars   : Если пользователь перетащит дочернее окно за пределы области MDI, полосы прокрутки не появятся.

Возвращаемое значение

Возвращает не нулевое значение в случае успешного создания Гаджета, в противном случае возвращает ноль. Если в качестве параметра #Gadget использовалось значение #PB_Any, то в случае успеха, возвращаемым значением будет сгенерированный Номер Гаджета.

Комментарии

Из-за связи с оконным меню, возможен только один Гаджет MDIGadget() в окне, но вы можете разместить другой во втором окне, если пожелаете. Вы можете разместить этот Гаджет только прямо в окне, вы НЕ можете разместить его внутри Гаджета ContainerGadget(), SplitterGadget() или PanelGadget().
Так как весь смысл этого Гаджета в динамическом отображении данных, рекомендуется для наполнения дочерних окон Гаджетами использовать флаг #PB_Any.

При использовании с этим Гаджетом функции AddGadgetItem() создаётся новое окно PB. С этим новым окном можно использовать все функции библиотеки Window (кроме функции StickyWindow()). Разумеется, Номер, выбранный для нового окна, не может повторять Номер другого открытого окна, иначе то другое окно будет закрыто. Гаджет MDI не возвращает никаких событий. Вместо этого события, касающиеся дочерних окон, будут приниматься как обычные события окна (#PB_Event_SizeWindow, #PB_Event_CloseWindow...).

Вы можете добавить 'Всплывающую мини-подсказку' к этому Гаджету с помощью функции GadgetToolTip().

Для работы с содержимым Гаджета можно использовать следующие функции:

- CountGadgetItems(): Возвращает количество дочерних окон.
- AddGadgetItem(): Добавляет новое дочернее окно в Гаджет.
- ClearGadgetItems(): Закрывает все дочерние окна.
- GetGadgetItemText(): Возвращает заголовок указанного дочернего окна.
- GetGadgetState(): Возвращает Номер дочернего окна, которое имеет фокус ввода (то есть окно - активное), или -1 если фокуса нет ни у одного окна.
- SetGadgetState(): Устанавливает фокус на дочернее окно, или инициирует упорядочивание дочерних окон (доп. смотрите описании функции GetGadgetState()).
- SetGadgetAttribute(): Со следующими атрибутами:
  #PB_MDI_Image    : Задаёт фоновое изображение. Передаётся идентификатор изображения ImageID. (смотрите описание функции ImageID())
  #PB_MDI_TileImage: Задаёт режим повторения. 0 выведет изображение в верхнем левом углу, 1 повторяет изображение до заполнения области.
Этот Гаджет поддерживает функции SetGadgetColor() и GetGadgetColor со значением типа #PB_Gadget_BackColor, для изменения цвета фона клиентской области (MDI).

Пример

  #Main = 0
  #MDIChild = 1
  If OpenWindow(#Main, 0, 0, 400, 300, "Гаджет Клиентская область MDI", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_SizeGadget | #PB_Window_MaximizeGadget)
    If CreateMenu(#Main, WindowID(#Main))
      MenuTitle("Меню индекс 0")
      MenuTitle("Меню дочернего окна MDI")
        MenuItem(0, "авто - созданный элемент")
        MenuItem(1, "авто - созданный элемент")

      MDIGadget(0, 0, 0, 0, 0, 1, 2, #PB_MDI_AutoSize)
        AddGadgetItem(0, #MDIChild, "дочернее окно")
          ; здесь добавляем Гаджеты...
      UseGadgetList(WindowID(#Main)) ; вернёмся к списку Гаджетов главного окна
    EndIf
    Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
  EndIf

См. также

AddGadgetItem(), CloseWindow(), CountGadgetItems(), ClearGadgetItems(), GetGadgetState(), SetGadgetState(), GetGadgetAttribute(), SetGadgetAttribute(), GetGadgetColor(), SetGadgetColor(), библиотека Window

Поддерживаемые OS

Windows

<- ListViewGadget() - Оглавление Gadget - OpenGLGadget()->