Implementando a função de encaixe no Delphi7 Quando usamos o Delphi7 para desenvolver sistemas aplicativos, muitas vezes precisamos usar a função de encaixe de subjanelas na janela principal. Se você não está familiarizado com esta parte, geralmente acessa o CSDN e outros sites para. encontre vários controles relacionados, ou Referindo-se à rotina Docking que vem com o Delphi, apresentarei a você um método simples que pode ser usado. 1. Adicione quatro painéis e quatro divisores à janela principal e defina o alinhamento nos lados superior, inferior, esquerdo e direito.
2. Defina o atributo DockSite dos quatro painéis como True.
3. Adicione eventos OnDockDrop, OnDockOver e OnUnDock aos painéis esquerdo e direito da seguinte forma:
PRocedure TfrmMain.pnlLeftUnDock(Remetente: TObject; Cliente: TControl;
NewTarget: TWinControl; var Permitir: Booleano);
começar
if (Remetente como TPanel).VisibleDockClientCount = 1 então
começar
(Remetente como TPanel).Largura:= 1;
fim ;
fim ; procedimento TfrmMain.pnlLeftDockDrop(Remetente: TObject;
Fonte: TDragDockObject; X, Y: Inteiro);
começar
(Remetente como TPanel).Width := max(source.Control.UndockWidth,(Remetente como TPanel).Width);
fim ; procedimento TfrmMain.pnlLeftDockOver (Remetente: TObject;
Fonte: TDragDockObject X, Y: Estado inteiro: TDragState;
varAceitar: Booleano);
começar
if State = dsDragEnter então
começar
(Remetente como TPanel).Width := max(Source.Control.UndockWidth, (Remetente como TPanel).Width);
fim
outro
começar
if Estado = dsDragLeave então
começar
(Remetente como TPanel).Largura:= 1;
fim;
fim;
fim;
Os painéis esquerdo e direito respondem aos códigos de evento com o mesmo código. 4. Adicione os eventos OnDockDrop, OnDockOver e OnUnDock aos painéis superior e inferior da seguinte forma:
procedimento TfrmMain.pnlBottomUnDock(Remetente: TObject; Cliente: TControl;
NewTarget: TWinControl; var Permitir: Booleano);
começar
if (Remetente como TPanel).DockClientCount = 1 então
começar
(Remetente como TPanel).Altura:= 1;
fim;
fim; procedimento TfrmMain.pnlBottomDockDrop(Sender: TObject;
Fonte: TDragDockObject; X, Y: Inteiro);
começar
(Remetente como TPanel).Height := max(source.Control.UndockHeight,(Remetente como TPanel).Height);
fim ; procedimento TfrmMain.pnlBottomDockOver (Remetente: TObject;
Fonte: TDragDockObject X, Y: Estado inteiro: TDragState;
varAceitar: Booleano);
começar
if State = dsDragEnter então
começar
(Remetente como TPanel).Height := max(Source.Control.UndockHeight, (Remetente como TPanel).Height);
fim
outro
começar
if Estado = dsDragLeave então
começar
(Remetente como TPanel).Altura:= 1;
fim;
fim;
fim;
Os painéis superior e inferior respondem aos códigos de evento com o mesmo código. 5. Crie um novo formulário para encaixar no formulário principal.
6. Defina o novo formulário DragKind como dkDock e DragMode como dmAutomatic.
7. Adicione o seguinte código ao evento OnClose do novo formulário:
se self.HostDockSite <> nulo então
começar
self.ManualDock(nil);
fim ;
Ação := caHide;
8. Configure novos formulários para não serem criados automaticamente.
9. Crie um novo formulário no corpo criativo principal e exiba-o. Lembre-se: use Show, não ShowModal. Este método não é muito padronizado. Se você precisar de um controle mais detalhado, é melhor consultar o exemplo de Docking do Delphi. Se você alterar um Painel neste exemplo para TabControl ou PageConrol, poderá obter melhores resultados, mas o código precisa ser ligeiramente alterado. Amigos interessados podem tentar.