Implementação de tecnologia de docking em Delphi:
Com o avanço contínuo da tecnologia de software, a interface do software está se tornando cada vez mais bonita e a operação cada vez mais conveniente.
Olhando para vários softwares profissionais no mercado, descobriremos que a maioria deles fornece a função de encaixe de formulários, especialmente softwares de ferramentas, que basicamente possuem mais ou menos função de encaixe.
Naturalmente, o Delphi também suporta docking e está intimamente integrado ao VCL, o que é um grande benefício para a maioria dos programadores Delphi. Vamos economizar o tempo chato de codificação. Concentre-se na concepção do programa principal.
Vamos primeiro revisar a estrutura da VCL. Existe uma propriedade DockSite (booleana) na classe TWinControl. Sua função é permitir que outros controles sejam encaixados nela. Existe uma propriedade DragKind na classe TControl. Para poder encaixar em outros controles, defina a propriedade DragKind como dkDock. É simples assim, basta definir as propriedades e um programa que suporta encaixe estará concluído.
Claro, as etapas acima são apenas as etapas mais básicas. Com as duas etapas acima, podemos continuar a escrever código para implementar funções mais complexas.
Geralmente, os programas que suportam encaixe podem ser encaixados na parte superior, inferior, esquerda e direita da janela principal. Ou seja, é melhor colocar controles que podem ser encaixados na lateral da janela principal (desde que. eles são herdados do TWinControl), geralmente escolhemos TPanel , para facilitar o entendimento dos leitores, podemos assumir que o lado esquerdo da janela principal pode ser encaixado, então coloque um atributo Align na janela principal com um lLeft's Panel é denominado LeftDockPanel, a largura é 0 e o atributo DockSite é True. Claro, nosso LeftDockPanel deve ser capaz de alterar o tamanho, então coloque um TSplitter no lado direito dele, denominado LeftSplitter, e o atributo Align é. tudo à esquerda. O próximo é o controle de encaixe. Geralmente, os controles de encaixe do programa são formulários, então também construímos um formulário e o nomeamos DockableForm. A propriedade DragKind é definida como dkDock e a propriedade DragMode é definida como dmAutomatic (encaixe automático).
Agora podemos executar este programa, o quê? Não é eficaz? O formulário encaixado desaparece após ser encaixado!
Ah, quase esqueci, o Delphi irá gerar alguns eventos quando o formulário encaixado for encaixado, eles são
1. OnDockOver(Remetente: TObject; Fonte: TDragDockObject;
X, Y: Estado inteiro: TDragState;
2. OnDockDrop(Remetente: TObject; Fonte: TDragDockObject;
X, Y: Inteiro);
3. OnGetSiteInfo(Remetente: TObject; DockClient: TControl;
var InfluenceRect: TRect MousePos: TPoint;
4. OnStartDock(Remetente: TObject;
var DragObject: TDragDockObject);
5. OnEndDock(Remetente, Destino: TObject; X, Y: Inteiro);
6. OnUnDock(Remetente: TObject; Cliente: TControl;
NewTarget: TWinControl; var Permitir: Boolean);
Uau, tantos, não se preocupe, deixe-me explicar em detalhes:
Vamos dar uma olhada no primeiro evento primeiro
OnDockOver é acionado quando o controle encaixado (DockableForm) passa pelo controle encaixado (LeftDockPanel). A fonte contém informações sobre as operações de encaixe e arrastamento. Um atributo importante é Control, que é DockableForm. Outro atributo importante é DockRect, que é a posição de encaixe. dsDragMove, respectivamente, significa arrastar, arrastar e arrastar para mover. Aceitar significa concordar com o encaixe; A principal função do evento OnDockOver é controlar a posição de visualização do formulário encaixado. Vamos adicionar o seguinte código: