2009-08-13 2 views
5

Comment est-ce que je fais la méthode IDE ou finalement fais la méthode de dock de base sans le mouvement très lent de gel du formulaire ancrable?Comment créer des formulaires ancrables comme les EDI sans le mouvement de congélation très lent du formulaire ancrable?

Quand je googlé pour les formes ancrables Delphi et trouvé a post by Zibadian on Programmers Heaven:

Tout d'abord: Les fenêtres de l'IDE Delphi ne sont pas des formes de MDI, par des formes SDI.

Maintenant, pour créer une fenêtre ancrable.

Form2 sera ancrable et Form1 sera l'endroit où l'ancrer. Placez un contrôle (tel qu'un TPanel) sur Form1 pour servir un DockSite. Assurez-vous de définir les propriétés DockSite et UseDockManager sur true pour ce contrôle.

Pour Form2, définissez DragKind sur dkDrop, DragMode sur dmAutomatic et UseDockManager sur true.

C'était la fonction de base du dock. Si vous exécutez votre programme, affichez le formulaire 2 et faites glisser ce formulaire sur le site d'ancrage, il doit être ancré sur ce site. Vous pouvez même le déconnecter en saisissant la "légende" comme vous l'avez vu dans l'EDI.

Pour moi, cette méthode déplace la forme ancrable très lentement. Cependant, la réponse de Zibadian continue à décrire comment l'EDI le fait à la place:

La méthode dock de l'EDI est un peu plus complexe, puisque vous ne voyez pas le site d'ancrage. Je pense, vous devez écrire un Form1.OnDockOver ou Form1.OnDockDrop pour effectuer cela. Ce (ces) événement (s) doit montrer le dock site à l'endroit approprié.

+2

Quelle version de Delphi utilisez-vous? Dans les versions récentes, il existe une propriété ScreenSnap à cette fin. – BlackTigerX

+0

Delphi 2009 Update 1-2-3-4. –

Répondre

8

Regardez l'article Using the TDockTabSet component par Jeremy North. Il a quelques années mais devrait vous donner quelques conseils utiles.

+0

Merci John. Je suis heureux d'avoir pu aider. – stukelly

+0

J'ai essayé TDockTabSet et son exemple, et c'est lent et ça scintille. À mon humble avis, ça a peut-être été bon dans la journée, mais ça ne marche plus très bien sur Delphi XE ou XE2. –

Questions connexes