Implémentation de la technologie d'accueil dans Delphi :
Avec l'avancement continu de la technologie logicielle, l'interface du logiciel devient de plus en plus belle et le fonctionnement devient de plus en plus pratique.
En examinant divers logiciels professionnels sur le marché, nous constaterons que la plupart d'entre eux offrent la fonction d'accueil de formulaires, en particulier les logiciels outils, qui ont essentiellement plus ou moins de fonctions d'accueil.
Naturellement, Delphi prend également en charge le docking et est étroitement intégré à VCL, ce qui constitue une aubaine pour la majorité des programmeurs Delphi. Économisons le temps de codage ennuyeux. Focus sur la conception du programme de base.
Examinons d'abord la structure de la VCL. Il existe une propriété DockSite (booléenne) dans la classe TWinControl. Sa fonction est de permettre à d'autres contrôles d'y être ancrés. Il existe une propriété DragKind dans la classe TControl. Pour pouvoir vous ancrer sur d'autres contrôles, définissez la propriété DragKind sur dkDock. C'est aussi simple que cela, il suffit de définir les propriétés et un programme prenant en charge l'ancrage est terminé.
Bien entendu, ce qui précède ne représente que les étapes les plus élémentaires. Avec les deux étapes ci-dessus, nous pouvons continuer à écrire du code pour implémenter des fonctions plus complexes.
Généralement, les programmes prenant en charge l'ancrage peuvent être ancrés en haut, en bas, à gauche et à droite de la fenêtre principale. Autrement dit, il est préférable de placer les contrôles pouvant être ancrés sur le côté de la fenêtre principale (à condition que ce soit le cas). ils sont hérités de TWinControl), généralement on choisit TPanel , afin de faciliter la compréhension des lecteurs, on peut supposer que le côté gauche de la fenêtre principale peut être ancré, donc mettre un attribut Align sur la fenêtre principale avec un Le panneau de gauche s'appelle LeftDockPanel, la largeur est de 0 et l'attribut DockSite est True. Bien sûr, notre LeftDockPanel devrait pouvoir changer la taille, alors placez un TSplitter sur le côté droit, nommé LeftSplitter, et l'attribut Align est. tout à gauche. Vient ensuite le contrôle d'ancrage. Généralement, les contrôles d'ancrage du programme sont des formulaires, nous construisons donc également un formulaire et le nommons DockableForm. La propriété DragKind est définie sur dkDock et la propriété DragMode est définie sur dmAutomatic (ancrage automatique).
Maintenant nous pouvons exécuter ce programme, quoi ? Pas efficace ? Le formulaire ancré disparaît après avoir été ancré !
Oh, j'ai presque oublié, Delphi générera des événements lorsque le formulaire ancré est ancré, ils sont
1. OnDockOver (Expéditeur : TObject ; Source : TDragDockObject ;
X, Y : entier ; état : TDragState ; var Accepter : booléen );
2. OnDockDrop (Expéditeur : TObject ; Source : TDragDockObject ;
X, Y : Entier);
3. OnGetSiteInfo (Expéditeur : TObject ; DockClient : TControl ;
var InfluenceRect : TRect ; MousePos : TPoint ; var CanDock : Booléen);
4. OnStartDock (Expéditeur : TObject ;
var DragObject : TDragDockObject);
5. OnEndDock (Expéditeur, Cible : TObject ; X, Y : Entier);
6. OnUnDock (Expéditeur : TObject ; Client : TControl ;
NewTarget : TWinControl ; var Autoriser : Booléen);
Wow, il y en a tellement, ne vous inquiétez pas, laissez-moi vous expliquer en détail :
Jetons d'abord un coup d'œil au premier événement
OnDockOver est déclenché lorsque le contrôle ancré (DockableForm) passe le contrôle ancré (LeftDockPanel). La source contient des informations sur les opérations d'ancrage et de glissement. Un attribut important est Control, qui est DockableForm, un autre attribut important est DockRect, qui est la position d'ancrage ; X et Y sont les positions de la souris. dsDragMove, signifie respectivement glisser vers l'intérieur, glisser vers l'extérieur et faire glisser pour déplacer ; Accepter signifie accepter ou non l'ancrage. La fonction principale de l'événement OnDockOver est de contrôler la position d'aperçu du formulaire ancré. Ajoutons le code suivant :