Содержание


NTL
Core
IControl

IControl



Описывает минимальный требуемый функционал от любого элемента управления.

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

class IControl : public virtual IComponent
{
public:
    // События родительского элемента управления 
    void(*OnParentStyleChange)(IControl *sender); // Событие вызывается при изменении стиля родителя если этот элемент управления использует его 
    void(*OnParentFontChange)(IControl *sender); // Событие вызывается при изменении родительского шрифта если этот элемент управления использует его 
    void(*OnParentResize)(IControl *sender); // Событие вызывается при изменении размера родителя 
    void(*OnParentTransform)(IControl *sender); // Событие вызывается при трансформации родителя 
    void(*OnParentTransformControls)(IControl *sender); // Событие вызывается при изменении трансфомации дочерних элементов управления на родительском элементе управления или форме 

    // События дочерних элементов управления 
    void(*OnChildStyleChange)(IControl *sender, IControl *control); // Событие вызывается когда изменился стиль дочернего элемента 
    void(*OnChildFontChange)(IControl *sender, IControl *control); // Событие вызывается когда у дочернего элемента изменяется шрифт 
    void(*OnChildTransform)(IControl *sender, IControl *control); // Событие вызывается когда дочерний элемент трансформировался 
    void(*OnChildResize)(IControl *sender, IControl *control); // Событие вызывается когда дочерний элемент поменял размер 
    void(*OnChildShow)(IControl *sender, IControl *control); // Событие вызывается когда дочерний элемент стал видимым 
    void(*OnChildHide)(IControl *sender, IControl *control); // Событие вызывается когда дочерний элемент стал невидимым 
    void(*OnChildAttach)(IControl *sender, IControl *control); // Событие вызывается когда дочерний элемент был добавлен 
    void(*OnChildDetach)(IControl *sender, IControl *control); // Событие вызывается когда дочерний элемент удалился 
    void(*OnChildEnable)(IControl *sender, IControl *control); // Событие вызывается когда дочерний элемент стал доступным 
    void(*OnChildDisable)(IControl *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(*OnShow)(IControl *sender); // Событие вызывается когда элемент управления становится видимым 
    void(*OnHide)(IControl *sender); // Событие вызывается когда элемент управления становится невидимым 
    void(*OnEnable)(IControl *sender); // Событие вызывается когда элемент управления становится доступным 
    void(*OnDisable)(IControl *sender); // Событие вызывается когда элемент управления становится недоступным 
    void(*OnResize)(IControl *sender); // Событие вызывается при изменении размера элемента управления 
    void(*OnTransform)(IControl *sender); // Событие вызывается когда элемент управления трансформировался 
    void(*OnTransformControls)(IControl *sender); // Событие вызывается при изменении трансформации дочерних элементов управления этого элемента управления 
    void(*OnStyleChange)(IControl *sender); // Событие вызывается при изменении стиля элемента управления 
    void(*OnFontChange)(IControl *sender); // Событие вызывается при изменении шрифта элемента управления 
    void(*OnSetModal)(IControl *sender); // Событие вызывается когда элемент управления становится модальным 
    void(*OnKillModal)(IControl *sender); // Событие вызывается когда элемент управления теряет модальное состояние 
    void(*OnSetFocus)(IControl *sender, const MessageFocus &m); // Событие вызывается когда элемент управления получает фокус 
    void(*OnKillFocus)(IControl *sender); // Событие вызывается когда элемент управления теряет фокус 
    void(*OnSetCaptureKeyboard)(IControl *sender); // Событие вызывается когда элемент управления захватывает ввод с клавиатуры 
    void(*OnKillCaptureKeyboard)(IControl *sender); // Событие вызывается когда элемент управления теряет захват ввода с клавиатуры 
    void(*OnSetCaptureMouse)(IControl *sender); // Событие вызывается когда элемент управления захватывает ввод с мышы 
    void(*OnKillCaptureMouse)(IControl *sender); // Событие вызывается когда элемент управления теряет захват ввода с мышы 
    void(*OnActivate)(IControl *sender); // Событие вызывается когда элемент управления становится активным 
    void(*OnDeactivate)(IControl *sender); // Событие вызывается когда элемент управления теряет активное состояние 

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

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

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

    // Другие события ввода 
    void(*OnDropFiles)(IControl *sender, const MessageDropFiles &m, bool &processed, bool &accepted); // Событие вызывается когда файлы были перетащены и брошены на элемент управления 

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

    virtual IControl *getParent() = 0; // Возвращает родительский элемент управления 
    virtual IStyle *getParentStyle() = 0; // Возвращает родительский стиль 
    virtual IStyle *getStyle() = 0; // Возвращает стиль. Может быть как собственный стиль так и стиль родительского элемента управления/формы, в зависимости от настроек 
    virtual IStyle *getControlStyle() = 0; // Возвращает свой собственный стиль 
    virtual IFont *getFont() = 0; // Возвращает шрийт. Может быть либо собственный шрифт либо родительский, в зависимости от настроек 
    virtual IFont *getParentFont() = 0; // Возвращает родительский шрифт 
    virtual IFont *getControlFont() = 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 ITransform *getTransform() = 0; // Возвращает трансформацию 
    virtual ITransform *getTransformControls() = 0; // Возвращает трансформацию дочерних элементов управления 
    virtual Mat4f getTransformMatrix() = 0; // Возвращает матрицу трансформаций. В системе координат клиентской части формы 
    virtual Align getAlign() = 0; // Возвращает выравнивание. По умолчанию alNone 
    virtual RectF getConstraints() = 0; // Возвращает ограничения. Left, Top - мимнимальная ширина и высота. Right, Bottom - максимальная ширина и высота. 0 - нет ограничения. Во умолчанию нет(0, 0, 0, 0) 
    virtual PointF getMinConstraints() = 0; // Возвращает минимально допустимую ширину и высоту 
    virtual PointF getMaxConstraints() = 0; // Возвращает максимально допустимую ширину и высоту 
    virtual float getMinWidth() = 0; // Возвращает минимально допустимую ширину 
    virtual float getMinHeight() = 0; // Возвращает мимнмально допустимую высоту 
    virtual float getMaxWidth() = 0; // Возвращает максимально допустимую ширину 
    virtual float getMaxHeight() = 0; // Возвращает максимально допустимую высоту 
    virtual PointF getSize() = 0; // Возвращает ширину и высоту 
    virtual float getWidth() = 0; // Возвращает ширину 
    virtual float getHeight() = 0; // Возвращает высоту 
    virtual RectF getRect() = 0; // Возвращает прямоугольник. Left, Top всегда 0, 0. Right, Bottom равны ширине, высоте 
    virtual RectF getClientRect() = 0; // Возвращает прямоугольника в координатной системе клиентской части. По умолчанию возвращает то же самое что и getRect() 
    virtual RectF getRenderRect() = 0; // Возвращает прямоугольник области рисования(например, элемент управления + его тень) в локальных координатах. По умолчанию возвращает то же самое что и getRect() 
    virtual int getZIndex() = 0; // Возвращает Z-индекс. По умолчанию Z-индекс всех элементов управления равен 0. Он управляет порядком рисования 
    virtual CursorType getCursor() = 0; // Возвращает тип курсора, когда он находится над элементом управления. По умолчанию crArrow 
    virtual int getTabOrder() = 0; // Возвращает tab order. Влияет на порядок в котором элементы управления получают фокус по нажатию Tab и Shift+Tab. Устанавливается автоматически, когда элемент управления добавляется на форму 
    virtual String getHintText() = 0; // Возвращает текст всплывающей подсказки для элемента управления. По умолчанию пустая строка 
    virtual float getHintDelay() = 0; // Возвращает задержку перед появлением всплывающей подсказки(в секундах). По умолчанию 0 
    virtual PointF getHintShift() = 0; // Возвращает смещение всплывающей подсказки относительно лемента управления. По умолчанию 0, 0 
    virtual Point getDPI() = 0; // Возвращает DPI под который параметры элемента управления адаптированы. { 96, 96 } по умолчанию 
    virtual bool isAcceptForm() = 0; // Можно ли размещать непосредственно на форме 
    virtual bool isAcceptForm(IForm *form) = 0; // Можно ли разместить на указанной форме непосредственно 
    virtual bool isAcceptControl() = 0; // Можно ли размещать на элементах управления 
    virtual bool isAcceptControl(IControl *control) = 0; // Можно ли разместить на указанном элементе управления 
    virtual bool isAcceptControls() = 0; // Можно ли разместить другой элемент управления на этот 
    virtual bool isAcceptFocus() = 0; // Может ли получать фокус 
    virtual bool isAcceptModal() = 0; // Может ли быть в модальном состоянии 
    virtual bool isWantTabs() = 0; // Использует ли клавишу Tab. По умолчанию false 
    virtual bool isTabStop() = 0; // Может ли получать фокус по Tab и Shift+Tab 
    virtual bool isDeactivateByTab() = 0; // Можно ли активировать другой элемент управления по клавише Tab, если активен этот элемент управления. Не используется в модальном состоянии. Только для активного, не модального, состояния. По умолчанию true 
    virtual bool isModal() = 0; // Находится ли в модальном состоянии 
    virtual bool isHovered() = 0; // Находится ли под указателем мышы 
    virtual bool isFocused() = 0; // В фокусе ли 
    virtual bool isVisible(const bool with_parents) = 0; // Видим ли. Если with_parents равно true, тогда проверяются все родители и возвращается false если хотя бы один из них невидим 
    virtual bool isEnabled(const bool with_parents) = 0; // Доступен ли. Если with_parents равно true, тогда проверяются все родители и возвращается false, если хотя бы один из них не доступен 
    virtual bool isCaptureMouse() = 0; // Захватил ли элемент управления ввод с мышы 
    virtual bool isCaptureKeyboard() = 0; // Захватил ли элемент управления ввод с клавиатуры 
    virtual bool isActive() = 0; // Активен ли 
    virtual bool isShowHint() = 0; // Нужно ли показывать подсказку. 
    virtual bool isFocusByMouse() = 0; // Может ли получить фокус кликом кнопки мышы на нем. True по умолчанию. Работает только если isAcceptFocus() возвращает true 
    virtual bool isUseParentStyle() = 0; // Нужно ли использовать родительский или локальный стиль. По умолчанию true 
    virtual bool isUseParentFont() = 0; // Нужно ли использовать родительский или локальный шрифт. По умолчанию true 
    virtual bool isUseParentShowHint() = 0; // Whether parent or local hint visibility settings should be used. By default true 
    virtual bool isUseParentHintDelay() = 0; // Нужно ли использовать родительское или локальное значение задержки показа всплывающей подсказки. По умолчанию true 
    virtual bool isUseParentHintShift() = 0; // Нужно ли использовать родительское или локальное значение смещения всплывающей подсказки. По умолчанию true 
    virtual bool isAcceptChild(IControl *control) = 0; // Возвращает true, если дочерний элемент управления может быть размещен на этом элементу управления 
    virtual bool isStaticTabOrder() = 0; // Возвращает true, если tab order элемента управления и его дочерних элементов не должен изменятьмя при добавлении на форму. Должен возвращать true только если элемент управления используется как модальный иначе это приведет к неправильному переключению между элементами управления по клавишам Tab и Shift+Tab 
    virtual bool isAcceptBubbledEvents() = 0; // Return whether bubbled mouse and keyboard events should be sent to this control 
    virtual bool hasChild(IControl *control) = 0; // Проверяет что указанный элемент управления является дочерним элементом этого во всей иерархии дочерних элементов управления 
    virtual bool hasParent(IControl *control) = 0; // Check whether specified control is a parent of this one in entire hierarchy up to topmost one 
    virtual bool hasStyle() const = 0; // Return whether control has style 
    virtual bool hasFont() const = 0; // Return whether control has style 
    virtual bool hasExtra() = 0; // Return true only if control is in state where it has extra part shown. For example, drop down with shown list. 

    virtual bool setParent(IControl *value) = 0; // Устанавливает или удаляет родителя 
    virtual bool setStyle(IStyle *value) = 0; // Устанавливает стиль. Так же изменяет UseParentStyle на false 
    virtual bool setFont(IFont *value, const bool copy = true) = 0; // Устанавливает шрифт. Так же изменяет UseParentFont на false 
    virtual bool setTransform(ITransform *value) = 0; // Устанавливает трансформацию 
    virtual bool setTransformControls(ITransform *value) = 0; // Устанавливает трансформацию дочерних элементов управления 
    virtual bool setAlign(const Align value) = 0; // Устанавливает выравнивание 
    virtual bool setConstraints(const RectF &value) = 0; // Устанавливает ограничение 
    virtual bool setMinConstraints(const PointF &value) = 0; // Устанавливает минимально разрешенные ширину и высоту 
    virtual bool setMaxConstraints(const PointF &value) = 0; // Устанавливает максимально разрешенные ширину и высоту 
    virtual bool setMinWidth(const float value) = 0; // Устанавливает минимально разрешенную ширину 
    virtual bool setMinHeight(const float value) = 0; // Устанавливает минимально разрешенную высоту 
    virtual bool setMaxWidth(const float value) = 0; // Устанавливает максимально разрешенную ширину 
    virtual bool setMaxHeight(const float value) = 0; // Устанавливает максимально разрешенную ширину 
    virtual bool setSize(const PointF &value) = 0; // Устанавливает ширину и высоту. Не изменяет выравнивание 
    virtual bool setWidth(const float value) = 0; // Устанавливает ширину. Не изменяет выравнивание 
    virtual bool setHeight(const float value) = 0; // Устанавливает высоту. Не изменяет выравнивание 
    virtual bool setZIndex(const int value) = 0; // Устанавливает Z-индекс 
    virtual bool setCursor(const CursorType value) = 0; // Устанавливает курсор 
    virtual bool setTabOrder(const int value) = 0; // Устанавливает tab order 
    virtual bool setHintText(const String &value) = 0; // Устанавливает текст всплывающей подсказки 
    virtual bool setHintDelay(const float value) = 0; // Устанавливает задержку появления всплывающей подстказки. Так же меняет UseParentHintDelay на false 
    virtual bool setHintShift(const PointF &value) = 0; // Устанавливает смещение всплывающей подсказки. Также меняет UseParentHintShift на false 
    virtual bool setWantTabs(const bool value) = 0; // Устанавливает использует ли элемент управления клавишу Tab для своих собственных нужно и форма не должна обрабатывать ее 
    virtual bool setTabStop(const bool value) = 0; // Устанавливает может ли элемент управления получить фокус по клавишам Tab и Shift+Tab 
    virtual bool setDeactivateByTab(const bool value) = 0; // Устанавливает может ли модальный элемент управления быть активироано по клавише Tab 
    virtual bool setModal(const bool value) = 0; // Активировать/деактивировать модальное состояние 
    virtual bool setFocus() = 0; // Устанавливает фокус 
    virtual bool setVisible(const bool value) = 0; // Показывает и прячет 
    virtual bool setEnabled(const bool value) = 0; // Делает доступным и недоступным 
    virtual bool setShowHint(const bool value) = 0; // Устанавливает нужно ли показывать всплывающую подсказку. Так же меняет UseParentShowHint на false 
    virtual bool setUseParentStyle(const bool value) = 0; // Устанавливает какой стиль использовать, родительский или собственный 
    virtual bool setUseParentFont(const bool value) = 0; // Устанавливает какой шрифт использовать, родительский или собственный 
    virtual bool setUseParentShowHint(const bool value) = 0; // Устанавливает какие настройки видимости всплывающей подсказки использовать, родительские или собственные 
    virtual bool setUseParentHintDelay(const bool value) = 0; // Устанавливает какие настройки появления всплывающей подсказки использовать, родительские или собственные 
    virtual bool setUseParentHintShift(const bool value) = 0; // Устанавливает какие настройки смещения всплывающей подсказки использовать, родительские или собственные 
    virtual void setService(IControlService *value, const bool release_prev) = 0; // Устанавливает новый сервис. Используйте только совместимые сервисы и не передавайте пустые значения 
    virtual bool setDPI(const Point &value) = 0; // Адаптирует параметры элементов управления к новому DPI 
    virtual bool setStaticTabOrder(const bool value) = 0; // Устанавливает нужно ли сохранять tab order элемента управления и его дочерних элементов при добавлении на форму. Должно быть true только если элемент управления используется как модальный иначе в результате будет неправильный порядок переключения между элементами управления по клавишам Tab и Shift+Tab 

    // Элемент управления 
    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 void Repaint(const bool repaint_children) = 0; // Repaint entire control area with calling or not Repaint for all child controls 
    virtual void Repaint(const RectF &rect, const bool convert) = 0; // Перерисовывает указанную часть элемента управления. Convert указывает должна ли указанная часть быть преобразована в координаты формы или же она уже указана в этих координатах 
    virtual void Refresh(const bool refresh_children) = 0; // Clears internal canvas(drawing buffer). Do not call repaint automatically 

    // Порядок 
    virtual bool BringToFront() = 0; // Перемещает элемент управления в конец списка элементов управления родителя 
    virtual bool BringUp() = 0; // Перемещает элемент управления на одну позицию вверх в списке элементов управления родителя 
    virtual bool BringDown() = 0; // Перемещает элемент управления на одну позицию вниз в списке элементов управления родителя 
    virtual bool BringBefore(IControl *control) = 0; // Перемещает элемент управления в позицию перед указанным в списке элементов управления родителя 
    virtual bool BringBefore(const int index) = 0; // Перемещает элемент управления в позицию перед указанным индексом в списке элементов управления родителя 
    virtual bool BringAfter(IControl *control) = 0; // Перемещает элемент управления в позицию после указанного в списке элементов управления родителя 
    virtual bool BringAfter(const int index) = 0; // Перемещает элемент управления в позицию после указанного индекса в списке элементов управления родителя 

    // Помощники 
    virtual IControlService *QueryService() = 0; // Возвращает сервис 
    virtual PointF FormToLocal(const PointF &pos) = 0; // Преобразует координаты на форме в локальные координаты 
    virtual PointF LocalToForm(const PointF &pos) = 0; // Преобразует из локальных координат в координаты на форме 
    virtual bool ShowHint(const PointF &position) = 0; // Показывает всплывающую подсказку элемента управления. Положение указывается в координатном пространстве элемента управления 
};
Пространство имен: nitisa
Включение: Nitisa/Interfaces/IControl.h