Описывает минимальный требуемый функционал от любого элемента управления.
Вы можете найти больше информации в комментариях ниже. Переопределенные методы можно найти в соответствующем базовом интерфейсе.
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 |