Реализация функции закрепления в Delphi7 Когда мы используем Delphi7 для разработки прикладных систем, нам часто приходится использовать функцию закрепления подокна в главном окне. Если вы не знакомы с этой частью, вы обычно заходите на CSDN и другие веб-сайты. найдите различные связанные элементы управления или. Обращаясь к процедуре стыковки, поставляемой с Delphi, я познакомлю вас с простым методом, который можно использовать. 1. Добавьте в главное окно четыре панели и четыре разделителя и установите выравнивание по верхней, нижней, левой и правой сторонам.
2. Установите для атрибута DockSite четырех панелей значение True.
3. Добавьте события OnDockDrop, OnDockOver и OnUnDock на левую и правую панели следующим образом:
PROcedure TfrmMain.pnlLeftUnDock(Отправитель: TObject; Клиент: TControl;
NewTarget: TWinControl; var Разрешить: Boolean);
начинать
если (Отправитель как TPanel).VisibleDockClientCount = 1 , тогда
начинать
(Отправитель как TPanel). Ширина: = 1;
конец ;
конец ; процедура TfrmMain.pnlLeftDockDrop(Отправитель: TObject;
Источник: TDragDockObject X, Y: Integer);
начинать
(Отправитель как TPanel).Width := max(source.Control.UndockWidth,(Отправитель как TPanel).Width);
конец ; процедура TfrmMain.pnlLeftDockOver(Отправитель: TObject;
Источник: TDragDockObject; X, Y: целое состояние: TDragState;
varAccept: логическое значение);
начинать
если Состояние = dsDragEnter , то
начинать
(Отправитель как TPanel).Width := max(Source.Control.UndockWidth, (Отправитель как TPanel).Width);
конец
еще
начинать
если State = dsDragLeave , тогда
начинать
(Отправитель как TPanel). Ширина: = 1;
конец;
конец;
конец;
Левая и правая панели реагируют на коды событий одним и тем же кодом. 4. Добавьте события OnDockDrop, OnDockOver и OnUnDock на верхнюю и нижнюю панели следующим образом:
процедура TfrmMain.pnlBottomUnDock(Отправитель: TObject; Клиент: TControl;
NewTarget: TWinControl; вар Разрешить: Boolean);
начинать
если (Отправитель как TPanel).DockClientCount = 1 , тогда
начинать
(Отправитель как TPanel).Height:= 1;
конец;
конец; процедура TfrmMain.pnlBottomDockDrop(Отправитель: TObject;
Источник: TDragDockObject X, Y: Integer);
начинать
(Отправитель как TPanel).Height := max(source.Control.UndockHeight,(Отправитель как TPanel).Height);
конец ; процедура TfrmMain.pnlBottomDockOver(Отправитель: TObject;
Источник: TDragDockObject; X, Y: целое состояние: TDragState;
varAccept: логическое значение);
начинать
если Состояние = dsDragEnter, то
начинать
(Отправитель как TPanel).Height := max(Source.Control.UndockHeight, (Отправитель как TPanel).Height);
конец
еще
начинать
если State = dsDragLeave , тогда
начинать
(Отправитель как TPanel).Height:= 1;
конец;
конец;
конец;
Верхняя и нижняя Панели реагируют на коды событий одним и тем же кодом. 5. Создайте новую форму для пристыковки к основной форме.
6. Установите для новой формы DragKind значение dkDock и DragMode — dmAutomatic.
7. Добавьте в событие OnClose новой формы следующий код:
если self.HostDockSite <> ноль , то
начинать
self.ManualDock(ноль);
конец ;
Действие := caHide;
8. Установите автоматическое создание новых форм.
9. Создайте новую форму в основной части объявления и отобразите ее. Помните: используйте Show, а не ShowModal. Этот метод не очень стандартизирован. Если вам нужен более детальный контроль, лучше всего обратиться к примеру Docking в Delphi. Если вы измените Panel в этом примере на TabControl или PageConrol, вы сможете получить лучшие результаты, но код необходимо немного изменить. Заинтересованные друзья могут попробовать.