Implementación de la función de acoplamiento en Delphi7 Cuando usamos Delphi7 para desarrollar sistemas de aplicaciones, a menudo necesitamos usar la función de acoplar subventanas en la ventana principal. Si no está familiarizado con esta parte, generalmente visita CSDN y otros sitios web. encuentre varios controles relacionados, o en referencia a la rutina de acoplamiento que viene con Delphi, le presentaré un método simple que puede usar. 1. Agregue cuatro paneles y cuatro divisores a la ventana principal y establezca la alineación en los lados superior, inferior, izquierdo y derecho.
2. Establezca el atributo DockSite de los cuatro paneles en Verdadero.
3. Agregue eventos OnDockDrop, OnDockOver y OnUnDock a los paneles izquierdo y derecho de la siguiente manera:
Procedimiento TfrmMain.pnlLeftUnDock(Remitente: TObject; Cliente: TControl;
NewTarget: TWinControl; var Permitir: booleano);
comenzar
si (Remitente como TPanel).VisibleDockClientCount = 1 entonces
comenzar
(Remitente como TPanel). Ancho: = 1;
fin ;
finalizar ; procedimiento TfrmMain.pnlLeftDockDrop(Remitente: TObject;
Fuente: TDragDockObject; X, Y: entero);
comenzar
(Remitente como TPanel). Ancho: = max (source.Control.UndockWidth, (Remitente como TPanel). Ancho);
finalizar ; procedimiento TfrmMain.pnlLeftDockOver(Remitente: TObject;
Fuente: TDragDockObject; X, Y: Entero; Estado: TDragState;
varAceptar: booleano);
comenzar
si Estado = dsDragEnter entonces
comenzar
(Remitente como TPanel).Width := max(Source.Control.UndockWidth, (Remitente como TPanel).Width);
fin
demás
comenzar
si Estado = dsDragLeave entonces
comenzar
(Remitente como TPanel). Ancho: = 1;
fin;
fin;
fin;
Los paneles izquierdo y derecho responden a códigos de evento con el mismo código. 4. Agregue eventos OnDockDrop, OnDockOver y OnUnDock a los paneles superior e inferior de la siguiente manera:
procedimiento TfrmMain.pnlBottomUnDock(Remitente: TObject; Cliente: TControl;
NewTarget: TWinControl; var Permitir: booleano);
comenzar
si (Remitente como TPanel).DockClientCount = 1 entonces
comenzar
(Remitente como TPanel). Altura: = 1;
fin;
fin; procedimiento TfrmMain.pnlBottomDockDrop(Remitente: TObject;
Fuente: TDragDockObject; X, Y: entero);
comenzar
(Remitente como TPanel). Altura := max(source.Control.UndockHeight, (Remitente como TPanel). Altura);
finalizar ; procedimiento TfrmMain.pnlBottomDockOver(Remitente: TObject;
Fuente: TDragDockObject; X, Y: Entero; Estado: TDragState;
varAceptar: Booleano);
comenzar
si Estado = dsDragEnter entonces
comenzar
(Remitente como TPanel). Altura := max(Source.Control.UndockHeight, (Remitente como TPanel). Altura);
fin
demás
comenzar
si Estado = dsDragLeave entonces
comenzar
(Remitente como TPanel). Altura: = 1;
fin;
fin;
fin;
Los Paneles superior e inferior responden a códigos de evento con el mismo código. 5. Cree un nuevo formulario para acoplarlo al formulario principal.
6. Configure el nuevo formulario DragKind en dkDock y DragMode en dmAutomatic.
7. Agregue el siguiente código al evento OnClose del nuevo formulario:
si self.HostDockSite <> nulo entonces
comenzar
self.ManualDock(nulo);
fin ;
Acción := caHide;
8. Configure nuevos formularios para que no se creen automáticamente.
9. Cree un nuevo formulario en el cuerpo creativo principal y muéstrelo. Recuerde: use Show, no ShowModal. Este método no está muy estandarizado. Si necesita un control más detallado, es mejor consultar el ejemplo de acoplamiento de Delphi. Si cambia un Panel en este ejemplo a TabControl o PageConrol, puede obtener mejores resultados, pero es necesario cambiar ligeramente el código. Los amigos interesados pueden probarlo.