Implémentation de la fonction d'ancrage dans Delphi7 Lorsque nous utilisons Delphi7 pour développer des systèmes d'application, nous devons souvent utiliser la fonction d'ancrage de sous-fenêtres sur la fenêtre principale. Si vous n'êtes pas familier avec cette partie, vous accédez généralement au CSDN et à d'autres sites Web. trouvez divers contrôles associés, ou En vous référant à la routine Docking fournie avec Delphi, je vais vous présenter une méthode simple qui peut être utilisée. 1. Ajoutez quatre panneaux et quatre séparateurs à la fenêtre principale et définissez l'alignement sur les côtés supérieur, inférieur, gauche et droit.
2. Définissez l'attribut DockSite des quatre panneaux sur True.
3. Ajoutez les événements OnDockDrop, OnDockOver et OnUnDock aux panneaux gauche et droit comme suit :
PROcédure TfrmMain.pnlLeftUnDock (Expéditeur : TObject ; Client : TControl ;
NewTarget : TWinControl ; var Autoriser : Booléen);
commencer
if (Expéditeur en tant que TPanel).VisibleDockClientCount = 1 then
commencer
(Expéditeur en tant que TPanel).Width := 1;
fin ;
fin ; procédure TfrmMain.pnlLeftDockDrop(Expéditeur : TObject ;
Source : TDragDockObject ; X, Y : entier );
commencer
(Expéditeur en tant que TPanel).Width := max(source.Control.UndockWidth,(Expéditeur en tant que TPanel).Width);
fin ; procédure TfrmMain.pnlLeftDockOver(Expéditeur : TObject ;
Source : TDragDockObject ; X, Y : entier ; État : TDragState ;
varAccept : booléen);
commencer
si État = dsDragEnter alors
commencer
(Expéditeur en tant que TPanel).Width := max(Source.Control.UndockWidth, (Expéditeur en tant que TPanel).Width);
fin
autre
commencer
si État = dsDragLeave alors
commencer
(Expéditeur en tant que TPanel).Width := 1;
fin;
fin;
fin;
Les panneaux gauche et droit répondent aux codes d'événement avec le même code. 4. Ajoutez les événements OnDockDrop, OnDockOver et OnUnDock aux panneaux supérieur et inférieur comme suit :
procédure TfrmMain.pnlBottomUnDock(Expéditeur : TObject ; Client : TControl ;
NewTarget : TWinControl ; var Autoriser : Booléen);
commencer
if (Expéditeur en tant que TPanel).DockClientCount = 1 then
commencer
(Expéditeur en tant que TPanel).Hauteur := 1;
fin;
fin; procédure TfrmMain.pnlBottomDockDrop(Expéditeur : TObject ;
Source : TDragDockObject ; X, Y : entier );
commencer
(Expéditeur en tant que TPanel).Height := max(source.Control.UndockHeight,(Expéditeur en tant que TPanel).Height);
fin ; procédure TfrmMain.pnlBottomDockOver(Expéditeur : TObject ;
Source : TDragDockObject ; X, Y : entier ; État : TDragState ;
varAccept : booléen);
commencer
si État = dsDragEnter alors
commencer
(Expéditeur en tant que TPanel).Height := max(Source.Control.UndockHeight, (Expéditeur en tant que TPanel).Height);
fin
autre
commencer
si État = dsDragLeave alors
commencer
(Expéditeur en tant que TPanel).Hauteur := 1;
fin;
fin;
fin;
Les panneaux supérieur et inférieur répondent aux codes d'événement avec le même code. 5. Créez un nouveau formulaire à ancrer au formulaire principal.
6. Définissez le nouveau formulaire DragKind sur dkDock et DragMode sur dmAutomatic.
7. Ajoutez le code suivant à l'événement OnClose du nouveau formulaire :
si self.HostDockSite <> nul alors
commencer
self.ManualDock(nil);
fin ;
Action := caHide ;
8. Définissez les nouveaux formulaires pour qu'ils ne soient pas créés automatiquement.
9. Créez un nouveau formulaire dans le corps créatif principal et affichez-le. N'oubliez pas : utilisez Show, pas ShowModal. Cette méthode n'est pas très standardisée. Si vous avez besoin d'un contrôle plus détaillé, il est préférable de se référer à l'exemple Docking de Delphi. Si vous modifiez un panneau dans cet exemple en TabControl ou PageConrol, vous pouvez obtenir de meilleurs résultats, mais le code doit être légèrement modifié. Les amis intéressés peuvent l'essayer.