2009-08-13 3 views

Répondre

1

J'ai déjà utilisé un composant nommé handles, que si je me souviens bien n'était pas trop difficile à mettre à jour vers les versions ultérieures de Delphi et multi-select en charge.

+0

J'ai utilisé ce composant et ajouté plusieurs sélections avec quelques modifications. Le seul bogue visuel est le rectangle de sélection de la souris qui passe sous les contrôles (puisque je le peins sur le canevas parent) et que le décalage des contrôles réels est de +2 pixels sur les deux axes. Merci. – pani

2

Si vous ne trouvez pas de façon plus simple, vous pouvez toujours le faire manuellement. Conservez une liste de tous les contrôles sélectionnés. Lorsque l'opération de glissement commence, faites une autre liste, celle-ci contenant des valeurs TPoint indiquant jusqu'où, sur les deux axes, les propriétés Top et Left de chaque contrôle proviennent de la position de la souris. Ensuite, lorsque l'utilisateur fait glisser le contrôle, mettez à jour continuellement les contrôles sélectionnés pour les maintenir dans les bonnes positions relatives au pointeur de la souris.

+1

Je pensais quelque chose comme votre suggestion, mais il a seulement besoin de delta valeurs de position pour le contrôle maître, je vais déplacer et appliquer ces deltas aux autres contrôles. Donc, si control1 est modifié. Gauche de 3 pixels et .Top 10 pixels puis controlN.Left: = controlN.Left + DeltaX; controlN.Top: = controlN.Top + DeltaY; J'ai fait quelques tests avec ceci mais je ne peux pas déplacer le reste des commandes pendant que je bouge le master. – pani

0

Que diriez-vous d'un commercial solution? La capture d'écran montre des outils d'alignement, ce qui suggère qu'elle supporte le multi-sélection.

+0

C'est la première bibliothèque que j'ai regardée mais j'ai décidé de l'implémenter moi-même puisque j'avais déjà codé la plupart des fonctionnalités nécessaires. – pani

3

Une autre solution commerciale serait de DevExpress: LayoutControl. Il permet le glisser-déposer, le regroupement, le réarrangement total, le masquage et l'ajout de composants lors de l'exécution.

+0

Je ne veux vraiment pas m'enfermer avec un fournisseur tiers, en particulier DevExpress, pour quelque chose d'aussi simple. – pani

Questions connexes