Содержание


NTL
Core
IForm

IForm



Описывает форму.

Вы можете найти больше информации в комментариях ниже. Переопределенные методы можно найти в соответствующем базовом интерфейсе.

class IForm : public virtual IClass
{
public:
    // События дочерних элементов управления 
    void(*OnChildStyleChange)(IForm *sender, IControl *control); // Событие вызывается при изменении стиля дочернего элемента управления 
    void(*OnChildFontChange)(IForm *sender, IControl *control); // Событие вызывается когда меняется шрифт дочернего элемента управления 
    void(*OnChildTransform)(IForm *sender, IControl *control); // Событие вызывается когда дочерний элемент трансформировался 
    void(*OnChildResize)(IForm *sender, IControl *control); // Событие вызывается когда дочерний элемент поменял размер 
    void(*OnChildShow)(IForm *sender, IControl *control); // Событие вызывается когда дочерний элемент стал видим 
    void(*OnChildHide)(IForm *sender, IControl *control); // Событие, вызывающееся когда дочерний элемент управления стал скрытым 
    void(*OnChildEnable)(IForm *sender, IControl *control); // Событие вызывается когда дочерний элемент стал доступен 
    void(*OnChildDisable)(IForm *sender, IControl *control); // Событие вызывается когда дочерний элемент стал недоступен 
    void(*OnChildBeforeTransform)(IForm *sender, IControl *control, bool &allowed) = 0; // Event called before applying transformation to control. Set allowed to false to forbid the change 
    void(*OnChildBeforeResize)(IForm *sender, IControl *control, bool &allowed) = 0; // Event called before resizing control. Set allowed to false to forbid the change 
    void(*OnChildBeforeShow)(IForm *sender, IControl *control, bool &allowed) = 0; // Event called before showing control. Set allowed to false to forbid the change 
    void(*OnChildBeforeHide)(IForm *sender, IControl *control, bool &allowed) = 0; // Event called before hiding control. Set allowed to false to forbid the change 
    void(*OnChildBeforeEnable)(IForm *sender, IControl *control, bool &allowed) = 0; // Event called before enabling control. Set allowed to false to forbid the change 
    void(*OnChildBeforeDisable)(IForm *sender, IControl *control, bool &allowed) = 0; // Event called before disabling control. Set allowed to false to forbid the change 

    // События изменения состояний 
    void(*OnResize)(IForm *sender); // Событие вызывается при изменении размера формы 
    void(*OnTransform)(IForm *sender); // Событие вызывается при изменении трансформации формы(перемещение) 
    void(*OnTransformControls)(IForm *sender); // Событие вызывается когда изменилась трансформация дочернего элемента 
    void(*OnStyleChange)(IForm *sender); // Событие вызывается при изменении стиля 
    void(*OnFontChange)(IForm *sender); // Событие вызывается когда меняется шрифт 

    // События компонента 
    void(*OnComponentAttach)(IForm *sender, IComponent *component); // Событие вызывается после присоединении компонента 
    void(*OnComponentDetach)(IForm *sender, IComponent *component); // Событие вызывается после отсоединения компонента 

    // События элемента управления 
    void(*OnControlAttach)(IForm *sender, IControl *control); // Событие, вызывающееся когда элемент управления только был присоединен 
    void(*OnControlDetach)(IForm *sender, IControl *control); // Событие вызывается когда элемент управления отсоединился 
    void(*OnControlSetModal)(IForm *sender, IControl *control); // Событие вызывается когда элемент управления получил модальное состояние 
    void(*OnControlKillModal)(IForm *sender, IControl *control); // Событие вызывается когда элемент управления потерял модальное состояние 
    void(*OnControlSetFocus)(IForm *sender, IControl *control, const MessageFocus &m); // Событие вызывается когда элемент управления получает фокус 
    void(*OnControlKillFocus)(IForm *sender, IControl *control); // Событие вызывается когда элемент управления потерял фокус 
    void(*OnControlMouseHover)(IForm *sender, IControl *control, const MessagePosition &m); // Событие вызывается когда элемент управления оказывается под курсором мышы 
    void(*OnControlMouseLeave)(IForm *sender, IControl *control); // Событие, вызывающееся когда элемент управления больше не под указателем мышы 
    void(*OnControlSetCaptureKeyboard)(IForm *sender, IControl *control); // Событие вызывается когда элемент управления захватил ввод с клавиатуры 
    void(*OnControlKillCaptureKeyboard)(IForm *sender, IControl *control); // Событие вызывается когда элемент управления потерял захват ввода с клавиатуры 
    void(*OnControlSetCaptureMouse)(IForm *sender, IControl *control); // Событие вызывается когда элемент управления захватил ввод с мышы 
    void(*OnControlKillCaptureMouse)(IForm *sender, IControl *control); // Событие вызывается когда элемент управления потерял захват ввода с мышы 
    void(*OnControlActivate)(IForm *sender, IControl *control); // Событие вызывается когда элемент управления становится активным 
    void(*OnControlDeactivate)(IForm *sender, IControl *control); // Событие вызывается когда элемент управления теряет активное состояние 

    // События рисования 
    void(*OnPaint)(IForm *sender, const MessagePaint &m, bool &draw_children); // Событие вызывается в начале рисования формы 
    void(*OnPaintEnd)(IForm *sender, const MessagePaint &m); // Событие вызывается после рисования формы и элементов управления 

    // События ввода с клавиатуры 
    void(*OnKeyDown)(IForm *sender, const MessageKey &m); // Событие вызывается когда наживается клавиша на клавиатуре 
    void(*OnKeyUp)(IForm *sender, const MessageKey &m); // Событие вызывается когда отпускается клавиша на клавиатуре 
    void(*OnChar)(IForm *sender, const MessageChar &m); // Событие вызывается когда получен символ после ввода с клавиатуры 
    void(*OnDeadChar)(IForm *sender, const MessageChar &m); // Событие вызывается когда приходит составной символ с клавиатуры 

    // События ввода мышы 
    void(*OnMouseHover)(IForm *sender, const MessageMouse &m); // Событие вызывается при появлении указателя мышы над формой 
    void(*OnMouseLeave)(IForm *sender); // Событие вызывается когда указатель мышы покидает форму 
    void(*OnMouseMove)(IForm *sender, const MessageMouse &m); // Событие вызывается при движении указателя мышы 
    void(*OnLeftMouseButtonDown)(IForm *sender, const MessageMouse &m); // Событие вызывается при нажатии левой кнопки мышы 
    void(*OnLeftMouseButtonUp)(IForm *sender, const MessageMouse &m); // Событие вызывается при отпускании левой кнопки мышы 
    void(*OnLeftMouseButtonDoubleClick)(IForm *sender, const MessageMouse &m); // Событие вызывается при двойном щелчке левой кнопкой мышы 
    void(*OnRightMouseButtonDown)(IForm *sender, const MessageMouse &m); // Событие вызывается при нажатии парвой кнопки мышы 
    void(*OnRightMouseButtonUp)(IForm *sender, const MessageMouse &m); // Событие вызывается при отпускании правой кнопки мышы 
    void(*OnRightMouseButtonDoubleClick)(IForm *sender, const MessageMouse &m); // Событие вызывается при двойном щелчке правой кнопкой мышы 
    void(*OnMiddleMouseButtonDown)(IForm *sender, const MessageMouse &m); // Событие вызывается при нажатии средней кнопки мышы 
    void(*OnMiddleMouseButtonUp)(IForm *sender, const MessageMouse &m); // Событие вызывается при отпускании средней кнопки мышы 
    void(*OnMiddleMouseButtonDoubleClick)(IForm *sender, const MessageMouse &m); // Событие вызывается при двойном щелчке средней кнопкой мышы 
    void(*OnMouseVerticalWheel)(IForm *sender, const MessageMouseWheel &m); // Событие вызывается при вертикальной прокрутке мышью 
    void(*OnMouseHorizontalWheel)(IForm *sender, const MessageMouseWheel &m); // Событие вызывается при горизонтальной прокрутке мышью 

    // Другие события ввода 
    void(*OnDropFiles)(IForm *sender, const MessageDropFiles &m, bool &accepted); // Событие вызывается когда файлы были перетащены и брошены на форму 
    void(*OnHotkey)(IForm *sender, const MessageHotkey &m); // Событие, вызывающееся когда произошла зарегистрированная комбинация клавиш 
    void(*OnGestureZoom)(IForm *sender, const MessagePosition &m); // Событие вызывается при жесте Zoom 
    void(*OnGesturePan)(IForm *sender, const MessagePosition &m); // Событие вызывается при жесте Pan 
    void(*OnGestureRotate)(IForm *sender, const MessagePosition &m); // Событие вызывается при жесте Rotate 
    void(*OnGestureTwoFingerTap)(IForm *sender, const MessagePosition &m); // Событие вызывается при жесте Two Finger Tap 
    void(*OnGesturePressAndTap)(IForm *sender, const MessagePosition &m); // Событие вызывается при жесте Press and Tap 
    void(*OnGestureNotify)(IForm *sender); // Событие вызывается при жесте 
    void(*OnTouch)(IForm *sender, const MessageTouch &m); // Событие вызывается при касании 

    // События приложения 
    void(*OnApplicationActivate)(IForm *sender); // Событие вызывается когда приложение стало активным 
    void(*OnApplicationDeactivate)(IForm *sender); // Событие вызывается когда приложение стало неактивным 
    void(*OnQueryEndSession)(IForm *sender, bool &restricted); // Событие вызывается при попытке завершения сессии пользователя 
    void(*OnQueryOpen)(IForm *sender, bool &restricted); // Событие вызывается при открытии из трея 
    void(*OnEndSession)(IForm *sender, const MessageEndSession &m); // Событие вызывается при завершении сессии пользователя 
    void(*OnDeviceModeChange)(IForm *sender); // Событие вызывается после изменения режима устройства 
    void(*OnTimeChange)(IForm *sender); // Событие вызывается при изменении системного времени 
    void(*OnInputLanguageChangeRequest)(IForm *sender, bool &restricted); // Событие вызывается при запросе от системы на смену языка 
    void(*OnInputLanguageChange)(IForm *sender); // Событие вызывается после изменения языка 
    void(*OnDisplayChange)(IForm *sender, const MessageSize &m); // Событие вызывается когда меняются настройки дисплея 
    void(*OnThemeChange)(IForm *sender); // Событие вызывается после изменения темы 
    void(*OnClipboardUpdate)(IForm *sender); // Событие вызывается когда изменяется содержимое буфера обмена 
    void(*OnTranslateChange)(IForm *sender); // Событие вызывается когда приложение получает информацию об изменении матрицы переводов 

    // События окна 
    void(*OnDestroy)(IForm *sender); // Событие вызывается перед уничтожением формы 
    void(*OnActivate)(IForm *sender, const MessageWindowActivate &m); // Событие вызывается когда приложение стало активным 
    void(*OnDeactivate)(IForm *sender); // Событие вызывается когда приложение стало неактивным 
    void(*OnSetFocus)(IForm *sender); // Событие вызывается когда форма получила фокус 
    void(*OnKillFocus)(IForm *sender); // Событие вызывается когда форма потеряла фокус 
    void(*OnEnable)(IForm *sender); // Событие вызывается когда форма стала доступной 
    void(*OnDisable)(IForm *sender); // Событие вызывается когда форма стала недоступной 
    void(*OnClose)(IForm *sender, CloseAction &action); // Событие вызывается когда пользователь пытается закрыть форму. Действие можно изменить для предотвращения поведения по умолчанию 
    void(*OnShow)(IForm *sender); // Событие вызывается когда форма стала видимой 
    void(*OnHide)(IForm *sender); // Событие вызывается когда форма стала невидимой 
    void(*OnMove)(IForm *sender, const MessagePosition &m); // Событие вызывается при перемещении формы 
    void(*OnRestore)(IForm *sender, const MessageSize &m); // Событие вызывается когда форма восстанавливается 
    void(*OnMinimize)(IForm *sender, const MessageSize &m); // Событие вызывается когда форма сворачивается 
    void(*OnMaximize)(IForm *sender, const MessageSize &m); // Событие вызывается когда форма разворачивается 
    void(*OnResizing)(IForm *sender, const MessageWindowResizing &m); // Событие вызывается при изменении размеров формы 
    void(*OnMoving)(IForm *sender, const MessageRect &m); // Событие вызывается после перемещения формы 
    void(*OnEnterSizeMove)(IForm *sender); // Событие вызывается когда форма вошла в режим перемещения и изменения размера 
    void(*OnExitSizeMove)(IForm *sender); // Событие вызывается когда форма вышла из режима перемещения и изменения размера 
    void(*OnHScroll)(IForm *sender, const MessageWindowScroll &m); // Событие, вызывающееся при горизонтальной прокрутке 
    void(*OnVScroll)(IForm *sender, const MessageWindowScroll &m); // Событие, вызывающееся при вертикальной прокрутке 
    void(*OnLoseCapture)(IForm *sender); // Событие вызывается когда форма потеряла захват ввода 

    // События диалоговых виджетов 
    void(*OnDialogBoxActivate)(IForm *sender, IDialogBox *control); // Событие, вызывающееся когда диалоговый виджет становиться активным 
    void(*OnDialogBoxDeactivate)(IForm *sender, IDialogBox *control); // Событие, вызывающееся когда диалоговый виджет теряет активное состоняие 

    // События буфера обмена 
    void(*OnPasteString)(IForm *sender, const MessagePasteString &m); // Событие, вызывающееся когда строка для вставки становиться доступной после запроса вставки 

    virtual IRenderer *getRenderer() = 0;
    virtual IHint *getHint() = 0; // Возвращает всплывающую подсказку. Если не присоеденена, создает дефолтную 
    virtual IStyle *getStyle() = 0; // Возвращает стиль. По умолчанию nullptr 
    virtual IFont *getFont() = 0; // Возвращает шрийт. Если не связан, создает шрифт по умолсанию 
    virtual ICaret *getCaret() = 0; // Возвращает каретку. Если не привязана, создает каретку по умолчанию 
    virtual IControl *getModalControl() = 0; // Возвращает текущий модальный элемент управления 
    virtual IControl *getFocusedControl() = 0; // Возвращает элемент управления находящийся в фокусе 
    virtual IControl *getCaptureKeyboardControl() = 0; // Возвращает элемент управления, который захватил ввод с клавиатуры 
    virtual IControl *getCaptureMouseControl() = 0; // Возвращает элемент управления, который захватил ввод с мышы 
    virtual IControl *getHoveredControl() = 0; // Возвращает элемент управления под указателем мышы 
    virtual IControl *getActiveControl() = 0; // Возвращает текущий активный элемент управления 
    virtual IControl *getInputControl() = 0; // Возвращает элемент управлния, который обрабатывает весь ввод, который не был обработан другими элементами управления. Используется элементами управления, которые кастомизируют границы и заголовок формы для кастомного управления перемещением, изменением размера и другими операциями над формой 
    virtual int getControlCount(const bool total = false) = 0; // Возвращает количество элементов управления. Или непосредственно дочерних или всех в иерархии 
    virtual IControl *getControl(const int index) = 0; // Возвращает элемент управления по индексу 
    virtual IControl *getControl(const String &name) = 0; // Возвращает элемент управления по имени 
    virtual IControl *getControl(const PointF &position) = 0; // Возвращает элемент управления в указанном положении. Положение должно быть в системе координат относительно клиентской области окна 
    virtual int getControlIndex(IControl *control) = 0; // Возвращает индекс элемента управления в списке или -1 
    virtual int getComponentCount() = 0; // Возвращает количество компонентов 
    virtual IComponent *getComponent(const int index) = 0; // Возвращает компонент по индексу 
    virtual IComponent *getComponent(const String &name) = 0; // Возвращает компонент по имени 
    virtual int getComponentIndex(IComponent *component) = 0; // Возвращает индекс компонента в списке или -1 
    virtual ITransform *getTransform() = 0; // Возвращает трансформацию 
    virtual ITransform *getTransformControls() = 0; // Возвращает трансформацию дочерних элементов управления 
    virtual CursorType getCursor() = 0; // Возвращает тип курсора. По умолчанию Arrow 
    virtual String getHintText() = 0; // Возвращает текст всплывающей подсказки. По умолчанию пустая строка 
    virtual float getHintDelay() = 0; // Возвращает задержку появления всплывающей подсказки(в секундах). По умолчанию 0.5 секунды 
    virtual PointF getHintShift() = 0; // Возвращает смещение всплывающей подсказки. По умолчанию 0, 20 
    virtual Color getBackgroundColor() = 0; // Возвращает цвет фона. По умолчанию {240, 240, 240, 255} 
    virtual bool isShowHint() = 0; // Возвращает нужно ли показывать всплывающую подсказку. По умолчанию true 
    virtual bool isFocusByLMB() = 0; // Возвращает можно ли изменять фокус элементов управления по щелчку левой кнопкой мышы. По умолчанию true 
    virtual bool isFocusByRMB() = 0; // Возвращает можно ли изменять фокус элементов управления по щелчку правой кнопкой мышы. По умолчанию true 
    virtual bool isFocusByMMB() = 0; // Возвращает можно ли изменять фокус элементов управления по щелчку средней кнопкой мышы. По умолчанию true 
    virtual bool isFocusByTab() = 0; // Возвращает можно ли изменять фокус элементов управления по Tab и Shift+Tab. По умолчанию true 
    virtual bool isInterceptEnable() = 0; // Возвращает включен ли механизм перехватов. По умолчанию false 
    virtual int getTaskCount() = 0; // Возвращает число задач в списке 
    virtual ITask *getTask(const int index) = 0; // Возвращает задачу по индексу 
    virtual Rect getBorderWidth() = 0; // Возвращает ширину границы, которая используется только при выравнивании элементов управления. По умолчанию {0, 0, 0, 0}. Пространство выделенное под границы можно использовать для рисования кастомных границ и заголовка(popup стиль формы/окна так же можно использовать для предотвращения появления границ и заголовка по умолчанию) 
    virtual Point getDPI() = 0; // Возвращает DPI под который параметры элементов управления формы адаптированы. { 96, 96 } по умолчанию 
    virtual IDialogBox *getActiveDialogBox() = 0; // Возвращает активный диалоговый виджет 
    virtual IFormListener *getListener() = 0; // Возвращает присоединенный слушатель 

    // Геттеры окна 
    virtual bool isVisible() = 0; // Возвращает видим ли 
    virtual bool isEnabled() = 0; // Возвращает доступен ли 
    virtual bool isAcceptDragAndDrop() = 0; // Возвращает будет ли разрешено перетаскивать и бросать 
    virtual bool isAcceptDropFiles() = 0; // Возвращает будет ли приниматься перетаскивание файлов 
    virtual String getCaption() = 0; // Возвращает заголовок 
    virtual Rect getRect() = 0; // Возвращает прямоугольник в экранных координатах 
    virtual Point getSize() = 0; // Возвращает ширину и высоту 
    virtual Point getPosition() = 0; // Возвращает положение в экранных координатах 
    virtual int getLeft() = 0; // Возвращает левую позицию в экранных координатах 
    virtual int getTop() = 0; // Возвращает верхнюю позицию в экранных координатах 
    virtual int getWidth() = 0; // Возвращает ширину 
    virtual int getHeight() = 0; // Возвращает высоту 
    virtual Rect getClientRect() = 0; // Возвращает клиентский прямоугольник 
    virtual Point getClientSize() = 0; // Возвращает размер клиентской области 
    virtual int getClientWidth() = 0; // Возвращает ширину клиентской области 
    virtual int getClientHeight() = 0; // Возвращает высоту клиентской области 
    virtual WindowState getState() = 0; // Возвращает состояние 
    virtual CreateParams getCreateParams() = 0; // Возвращает параметры создания окна 
    virtual bool hasBorder() = 0; // Возвращает есть ли уформы стандартные границы 
    virtual bool hasCaption() = 0; // Возвращает имеет ли форма стандартную область заголовка 
    virtual bool hasDialogFrame() = 0; // Возвращает имеет ли форма стандартную диалоговую рамку 
    virtual bool hasHorizontalScroll() = 0; // Возвращает имеет ли форма стандартную горизонтальную полосу прокрутки 
    virtual bool hasVerticalScroll() = 0; // Возвращает имеет ли форма стандартную вертикальную полосу прокрутки 
    virtual bool hasMaximizeBox() = 0; // Возвращает имеет ли форма стандартную кнопку сворачивания 
    virtual bool hasMinimizeBox() = 0; // Возвращает имеет ли форма стандартную кнопку разворачивания 
    virtual bool hasSizeBox() = 0; // Возвращает можно ли изменять размер формы 
    virtual bool hasSystemMenu() = 0; // Возвращает имеет ли форма стандартное системное меню 
    virtual bool hasClientEdge() = 0; // Возвращает имеет ли форма стандартные клиентские грани 
    virtual bool hasContextHelp() = 0; // Возвращает есть ли у формы стандартная контекстная подсказка 
    virtual bool hasDialogModalFrame() = 0; // Возвращает имеет ли форма стандартную диалоговую модальную рамку 
    virtual bool hasStaticEdge() = 0; // Возвращает имеет ли форма стандартную статическую границу 
    virtual bool hasWindowEdge() = 0; // Возвращает имеет ли форма стандартные границы окна 
    virtual bool isPopup() = 0; // Возвращает является ли форма попапом 
    virtual bool isTabStop() = 0; // Возвращает является ли форма элементом управления, который можно активировать клавишей Tab 
    virtual bool isMDIChild() = 0; // Возвращает является ли форма MDI дочерней 
    virtual bool isToolWindow() = 0; // Возвращает является ли форма служебной 
    virtual bool isTopMost() = 0; // Возвращает будет ли форма всегда поверх других форм 

    virtual bool setHint(IHint *value) = 0; // Привязать подстказку 
    virtual bool setStyle(IStyle *value) = 0; // Привязать стиль 
    virtual bool setFont(IFont *value, const bool copy = true) = 0; // Привязать шрифт 
    virtual bool setCaret(ICaret *value) = 0; // Привязать каретку 
    virtual bool setModalControl(IControl *value) = 0; // Устанавливает новый модальный элемент управления. nullptr очищает историю модальнх элементов управления. Если элементу управления нужно просто убрать модальное состояние и передать его элементу управления, который был модальным до него, от должен вызвать метод ReleaseModal() 
    virtual bool setFocusedControl(IControl *value) = 0; // Устанавливает фокус новому элементу управления 
    virtual bool setActiveControl(IControl *value) = 0; // Устанавливает новый активный элемент управления 
    virtual bool setInputControl(IControl *value) = 0; // Устанавливает элемент управления, который получает весь ввод, который не был обработан другими элементами управления. Может быть nullptr. Используется элементами управления, которые астомизируют границы и заголовок формы, а так же управляют операциями изменения размера и перемещения. Обычно вызывается таким элементом управления в момент добавления его на форму 
    virtual bool setTransformControls(ITransform *value) = 0; // Устанавливает трансформацию дочерних элементов управления 
    virtual bool setCursor(const CursorType value) = 0; // Устанавливает тип курсора 
    virtual bool setHintText(const String &value) = 0; // Устанавливает текст всплывающей подсказки 
    virtual bool setHintDelay(const float value) = 0; // Устанавливает задержку появления всплывающей подстказки 
    virtual bool setHintShift(const PointF &value) = 0; // Устанавливает смещение всплывающей подсказки 
    virtual bool setBackgroundColor(const Color &value) = 0; // Устанавливает цвет фона 
    virtual bool setShowHint(const bool value) = 0; // Устанавливает нужно ли показывать всплывающую подсказку 
    virtual bool setFocusByLMB(const bool value) = 0; // Устанавливает могут ли элементы управления получить фокус с помощью клика по левой кнопке мышы 
    virtual bool setFocusByMMB(const bool value) = 0; // Устанавливает могут ли элементы управления получить фокус с помощью клика по средней кнопке мышы 
    virtual bool setFocusByRMB(const bool value) = 0; // Устанавливает могут ли элементы управления получить фокус с помощью клика по правой кнопке мышы 
    virtual bool setFocusByTab(const bool value) = 0; // Устанавливает могут ли элементы управления получить фокус по клавишам Tab и Shift+Tab 
    virtual bool setInterceptEnable(const bool value) = 0; // Устанавливает включены ли перехваты 
    virtual bool setBorderWidth(const Rect &value) = 0; // Устанавливает ширину границы. Используется в выравнивании. Граница может использоваться для рисования кастомных границ и области заголовка. При добавлении элемента управления, который кастомизирует границы и область заголовка формы, он устанавливает это свойство 
    virtual void setService(IFormService *value, const bool release_prev) = 0; // Устанавливает новый сервис. Используйте только совместимые сервисы и не передавайте пустые значения 
    virtual bool setDPI(const Point &value) = 0; // Адаптирует параметры элементов управления формы к новому DPI 
    virtual bool setActiveDialogBox(IDialogBox *value) = 0; // Устанавливает активный диалоговый виджет. nullptr очищает историю активации диалоговых виджетов 
    virtual void setListener(IFormListener *value) = 0; // Присоединение слушателя 

    // Сеттеры окна 
    virtual bool setVisible(const bool value) = 0; // Показывает/Скрывает 
    virtual bool setEnabled(const bool value) = 0; // Делает доступным и недоступным 
    virtual bool setAcceptDrawAndDrop(const bool value) = 0; // Устанавливает доступно ли перетаскивание и отпускание 
    virtual bool setAcceptDropFiles(const bool value) = 0; // Устанавливает доступно ли перетаскивание файлов 
    virtual bool setCaption(const String &value) = 0; // Устанавливает заголовок 
    virtual bool setRect(const Rect &value) = 0; // Устанавливает положение и размер 
    virtual bool setSize(const Point &value) = 0; // Устанавливает размер 
    virtual bool setPosition(const Point &value) = 0; // Устанавливает положение 
    virtual bool setLeft(const int value) = 0; // Устанавливает левую координату 
    virtual bool setTop(const int value) = 0; // Устанавливает координату верхы 
    virtual bool setWidth(const int value) = 0; // Устанавливает ширину 
    virtual bool setHeight(const int value) = 0; // Устанавливает высоту 
    virtual bool setClientSize(const Point &value) = 0; // Устанавливает размер клиентской области 
    virtual bool setState(const WindowState value) = 0; // Устанавливает состояние 
    virtual bool setModalResult(const ModalResult value) = 0; // Устанавливает модальный результат. Работает только если форма была показана методом ShowModal() 
    virtual bool setWindowPosition(const WindowPosition value) = 0; // Устанавливает положение окна 
    virtual void setCreateParams(const CreateParams &value) = 0; // Устанавливает параметры создания окна 
    virtual bool setHasBorder(const bool value) = 0; // Устанавливает имеет ли форма стандартные границы. Работает только перед созданием окна формы 
    virtual bool setHasCaption(const bool value) = 0; // Устанавливает имеет ли форма стандартную область заголовка. Работает только перед созданием окна формы 
    virtual bool setHasDialogFrame(const bool value) = 0; // Устанавливает имеет ли форма стандартную диалоговую рамку. Работает только перед созданием окна формы 
    virtual bool setHasHorizontalScroll(const bool value) = 0; // Устанавливает имеет ли форма стандартную горизонтальную полосу прокрутки. Работает только перед созданием окна формы 
    virtual bool setHasVerticalScroll(const bool value) = 0; // Устанавливает имеет ли форма стандартную вертикальную полосу прокрутки. Работает только перед созданием окна формы 
    virtual bool setHasMaximizeBox(const bool value) = 0; // Устанавливает имеет ли форма стандартную кнопку сворачивания. Работает только перед созданием окна формы 
    virtual bool setHasMinimizeBox(const bool value) = 0; // Устанавливает имеет ли форма стандартную кнопку разворачивания. Работает только перед созданием окна формы 
    virtual bool setHasSizeBox(const bool value) = 0; // Устанавливает можно ли менять размер формы. Работает только перед созданием окна формы 
    virtual bool setHasSystemMenu(const bool value) = 0; // Устанавливает имеет ли форма стандартное системное меню. Работает только перед созданием окна формы 
    virtual bool setHasClientEdge(const bool value) = 0; // Устанавливает имеент ли форма стандартные клиентские границы. Работает только перед созданием окна формы 
    virtual bool setHasContextHelp(const bool value) = 0; // Устанавливает есть ли у формы стандартная контекстная подсказка. Работает только, если вызывается до создания окна формы 
    virtual bool setHasDialogModalFrame(const bool value) = 0; // Устанавливает имеет ли форма стандартную модальную диалоговую рамку. Работает только перед созданием окна формы 
    virtual bool setHasStaticEdge(const bool value) = 0; // Устанавливает имеет ли форма стандартную статическую границу. Работает только перед созданием окна формы 
    virtual bool setHasWindowEdge(const bool value) = 0; // Устанавливает имеет ли форма стандартные границы окна. Работает только перед созданием окна формы 
    virtual bool setIsPopup(const bool value) = 0; // Устанавливает является ли форма попапом. Работает только перед созданием окна формы 
    virtual bool setIsTabStop(const bool value) = 0; // Устанавливает является ли форма элементом управления, который может быть активирован по клавише Tab. Работает только перед созданием окна формы 
    virtual bool setIsMDIChild(const bool value) = 0; // Устанавливает является ли форма стандартной MDI дочерней. Работает только перед созданием окна формы 
    virtual bool setIsToolWindow(const bool value) = 0; // Устанавливает является ли форма служебной. Работает только перед созданием окна формы 
    virtual bool setIsTopMost(const bool value) = 0; // Устанавливает будет ли форма всегда поверх других форм. Работает только перед созданием окна формы 

    // Компоненты 
    virtual bool AttachComponent(IComponent *component) = 0; // Добавляет компонент 
    virtual bool DeleteComponent(const int index) = 0; // Удаляет и уничтожает компонент по индексу 
    virtual bool DeleteComponent(IComponent *component) = 0; // Удаляет и уничтожает указанный компонент 
    virtual bool DeleteComponents() = 0; // Удаляет и уничтожает все компоненты 
    virtual bool DetachComponent(IComponent *component) = 0; // Отсоединяет, но не уничтожает указанный компонент 

    // Элементы управления 
    virtual bool AttachControl(IControl *control) = 0; // Добавляет элемент управления 
    virtual bool InsertControl(IControl *control, const int before) = 0; // Вставляет элемент управления перед указанной позицией 
    virtual bool DeleteControl(const int index) = 0; // Удаляет и уничтожает элемент управления по индексу 
    virtual bool DeleteControl(IControl *control) = 0; // Удаляет и уничтожает указанный элемент управления 
    virtual bool DeleteControls() = 0; // Удаляет и уничтожает элементы управления 
    virtual bool DetachControl(IControl *control) = 0; // Удаляет, но не уничтожает, указанный элемент управления 
    virtual IControl *FindControl(const String &name, IControl *exclude = nullptr) = 0; // Находит элемент с указанным именени во всей иерархии 
    virtual bool FocusPrevControl() = 0; // Передает фокус предидущему элементу управления(предидущий вычисляется по tab index) 
    virtual bool FocusNextControl() = 0; // Передает фокус следующему элементу управления(следующий вычисляется по tab index) 
    virtual bool CaptureKeyboard(IControl *control) = 0; // Отправлять весь ввод с клавиатуры указанному элементу управления. Если указать пустым, очистит очередь захвата ввода 
    virtual bool CaptureMouse(IControl *control, const bool system_capture) = 0; // Отправлять весь ввод с мышы указанному элементу управления. Если указать пустым, очистит очередь захвата ввода 
    virtual void ReleaseCaptureKeyboard() = 0; // Освобождает захват ввода с клавиатуры и передает его предидущему элементу управления, который имел захват ранее(если существует) 
    virtual void ReleaseCaptureMouse() = 0; // Освобождает захват ввода с мышы и передает его предидущему элементу управления, который имел захват ранее(если существует) 
    virtual void UpdateHoveredControl() = 0; // Обновляет признак нахождения элемента управления под указателем мышы используя текущее положение указателя мышы 
    virtual void ReleaseModal() = 0; // Передает модальное состояние элементу управления, который имел модальное состояние до этого. Если элемент управления наследуется от CDialogBox, то обычно нет необходимости использовать этот метод. Изменение диалогового виджета производится формой 

    // Рисование 
    virtual void LockRepaint() = 0; // Останавливает реальное рисование. Можно вызывать много раз 
    virtual void UnlockRepaint() = 0; // Возобновляет реальное рисование. Должен вызываться такое же количество раз, сколько был вызван LockRepaint, чтобы возобновить реальное рисование 
    virtual void Repaint() = 0; // Перерисовывает всю область формы 
    virtual void Refresh() = 0; // Вызывает Refresh() у всех дочерних элементов управления, заставляя их очистить внутренние канвы(буферы для рисования) 
    virtual void Repaint(const Rect &rect, const bool force = false) = 0; // Перерисовывает указанный прямоугольник формы. Если force равен true, текущий прямоугольник для перерисовки, сохраненный в форме, будет полность перезаписан новым. Если force равен false, новый прямоугольник будет добавлен к текущему. С force равным true и пустым прямоугольником перерисование может быть отключено 
    virtual void Repaint(const RectF &rect, const bool force = false) = 0; // Перерисовывает указанный прямоугольник формы. Если force равен true, текущий прямоугольник для перерисовки, сохраненный в форме, будет полность перезаписан новым. Если force равен false, новый прямоугольник будет добавлен к текущему. С force равным true и пустым прямоугольником перерисование может быть отключено 

    // Комбинации клавиш 
    virtual bool RegisterHotkey(const Key key, const bool ctrl, const bool alt, const bool shift, const bool is_down) = 0; // Регистрирует горячую клавишу 
    virtual bool UnregisterHotkey(const Key key, const bool ctrl, const bool alt, const bool shift, const bool is_down) = 0; // Удаляет горячую клавишу 
    virtual bool UnregisterHotkeys() = 0; // Удаляет все зарегистрированные горячие клавиши 

    // Помощники 
    virtual void Release() = 0; // Уничтожает экземпляр 
    virtual IFormService *QueryService() = 0; // Возвращает сервис 

    // Действия над окном 
    virtual bool Show() = 0; // Показывает 
    virtual ModalResult ShowModal() = 0; // Показывает в модальном состоянии 
    virtual bool Hide() = 0; // Скрыть 
    virtual PlatformHandle CreateTimer(TImerListener *listener, const float interval) = 0; // Создает таймер 
    virtual bool DeleteTimer(const PlatformHandle id) = 0; // Удаляет таймер 
    virtual void DeleteTimers() = 0; // Удаляет все таймеры 
    virtual bool ResetTimer(const PlatformHandle id, const float interval) = 0; // Изменяет и сбрасывает к началу интервал таймера 
    virtual bool Maximize() = 0; // Пазвернуть 
    virtual bool Minimize() = 0; // Свернуть 
    virtual bool Restore() = 0; // Востанавливает 
    virtual bool CopyStringToClipboard(const String &str) = 0; // Копирует указанную строку в буфер обмена 
    virtual bool CopyStringFromClipboard() = 0; // Копирует строку из буфера обмена. При успехе, виджет в фокусе получит уведомление NotifyOnPasteString() сразу или позже(зависит от OS) 
    virtual Rect ScreenToClient(const Rect &rect) = 0; // Преобразует координатф на экране в координаты на форме 
    virtual Point ScreenToClient(const Point &pos) = 0; // Преобразует координатф на экране в координаты на форме 
    virtual Rect ClientToScreen(const Rect &rect) = 0; // Преобразует координаты на форме в координаты на экране 
    virtual Point ClientToScreen(const Point &pos) = 0; // Преобразует координаты на форме в координаты на экране 
    virtual bool Close() = 0; // Закрывает форму(отправляет сообщение закрытия соответствующему окну) 

    // Задачи 
    virtual bool AddTask(ITask *task) = 0; // Добавляет задачу к форме. Все задачи выполняются(по очереди) после последней разблокировки рисования и удаляются после этого 
    virtual bool DeleteTask(const int index) = 0; // Удаляет задачу по идентификатору 
    virtual bool DeleteTask(ITask *task) = 0; // Удаляет указанную задачу 
    virtual void DeleteTasks() = 0; // Удаляет все задачи 
    virtual void RunTasks() = 0; // Запускает задачи(только если они еще не запущены) 

    // Действия с всплывающей подсказкой 
    virtual bool ShowHint(const String &text, const Point &position) = 0; // Показывает всплывающую подсказку. Положение указывается в координатном пространстве формы 
    virtual bool ShowHint(IControl *control, const PointF &position) = 0; // Показывает всплывающую подсказку элемента управления. Положение указывается в координатном пространстве элемента управления 
};

Элемент управления для получения ввода

Такой элемент управления используется для кастомизации формы. Он отвечает за рисование границ и заголовка. Этот элемент управления обычно имеет нулевой размер и при добавлении на форму он вызывает метод формы setInputControl(...) передавая себя в качестве параметра. Элемент управления, который установлен как обработчик ввода, получает все события от клавиатуры, которые получает форма, если они не были обработаны элементом управления захватившим ввод с клавиатуры. Он так же получает все события от мышы если они не были обработаны элементом управления захватившим ввод с мышы или такой элемент управления отсутствует. То эе самое справедливо и для события перетаскивания файлов.

Пространство имен: nitisa
Включение: Nitisa/Interfaces/IForm.h