Реализация технологии стыковки в Delphi:
Благодаря постоянному развитию технологий программного обеспечения интерфейс программного обеспечения становится все более красивым, а работа становится все более удобной.
Глядя на различное профессиональное программное обеспечение, представленное на рынке, мы обнаружим, что большинство из них обеспечивают функцию стыковки форм, особенно инструментальное программное обеспечение, которое в основном имеет более или менее функцию стыковки.
Естественно, Delphi также поддерживает стыковку и тесно интегрирован с VCL, что является большим благом для большинства программистов Delphi. Давайте сэкономим скучное время кодирования. Сосредоточьтесь на концепции основной программы.
Давайте сначала рассмотрим структуру VCL. В классе TWinControl есть свойство DockSite (логическое значение). Его функция заключается в том, чтобы разрешить прикрепление к нему других элементов управления. В классе TControl есть свойство DragKind. Чтобы иметь возможность закрепить другие элементы управления, установите для свойства DragKind значение dkDock. Это так просто, достаточно задать свойства и программа, поддерживающая стыковку, готова.
Конечно, вышеперечисленные шаги — это только самые основные. С помощью двух вышеуказанных шагов мы можем продолжить писать код для реализации более сложных функций.
Как правило, программы, поддерживающие крепление, можно закреплять сверху, снизу, слева и справа от главного окна. То есть лучше размещать элементы управления, которые можно закрепить сбоку от главного окна (при условии, что это возможно). они унаследованы от TWinControl), обычно мы выбираем TPanel, для облегчения понимания читателям можно предположить, что левую часть главного окна можно закрепить, поэтому поместите атрибут Align в главное окно с помощью Панель lLeft называется LeftDockPanel, ширина равна 0, а атрибут DockSite имеет значение True. Конечно, наша LeftDockPanel должна иметь возможность изменять размер, поэтому поместите TSplitter с правой стороны от нее с именем LeftSplitter и атрибутом Align. влево. Далее идет элемент управления закреплением. Обычно элементы управления закреплением в программе представляют собой формы, поэтому мы также создаем форму и называем ее DockableForm. Для свойства DragKind установлено значение dkDock, а для свойства DragMode установлено значение dmAutomatic (автоматическое закрепление).
Теперь мы можем запустить эту программу, что? Не эффективно? Прикрепленная форма исчезает после пристыковки!
Да, чуть не забыл, Delphi будет генерировать некоторые события при закреплении закрепленной формы, они
1. OnDockOver (Отправитель: TObject; Источник: TDragDockObject;
X, Y: целое число; состояние: TDragState var Accept: Boolean);
2. OnDockDrop (Отправитель: TObject; Источник: TDragDockObject;
X, Y: целое число);
3. OnGetSiteInfo (Отправитель: TObject; DockClient: TControl;
вар InfluenceRect: TRect; MousePos: TPoint; вар CanDock: Boolean);
4. OnStartDock (Отправитель: TObject;
вар DragObject: TDragDockObject);
5. OnEndDock(Отправитель, Цель: TObject; X, Y: Целое число);
6. OnUnDock (Отправитель: TObject; Клиент: TControl;
NewTarget: TWinControl; var Разрешить: Boolean);
Ого, как много, не волнуйтесь, позвольте мне объяснить подробно:
Давайте сначала посмотрим на первое событие
OnDockOver срабатывает, когда закрепленный элемент управления (DockableForm) передает закрепленный элемент управления (LeftDockPanel). Источник содержит информацию об операциях закрепления и перетаскивания. Одним из важных атрибутов является Control, то есть DockableForm. Другой важный атрибут — DockRect, который указывает положение закрепления; X и Y — это положение мыши. dsDragMove соответственно означает перетаскивание, перетаскивание и перетаскивание для перемещения. Accept означает согласие на стыковку; Основная функция события OnDockOver — управление положением предварительного просмотра закрепленной формы. Добавим следующий код: