Avant que Delphi 2006 (je pense) a présenté le TFlowPanel et TGridPanel, j'ai fait un contrôle qui était similaire dans le concept. Il fait encore un certain nombre de choses que ces contrôles ne font pas, et lors de la mise à jour de mon code à Delphi 2009, j'ai décidé d'ajouter quelques améliorations à cela aussi.Glisser-déposer au moment du design en Delphi?
À l'heure actuelle, l'ordre des contrôles enfants est déterminé par leur ordre de création. Le FlowPanel et GridPanel montrent un meilleur moyen avec ControlIndex et d'autres propriétés filtrées, mais je me demandais s'il existe un moyen de gérer le réordonnancement glisser-déposer au moment du design? Pour autant que je sache, faire glisser un contrôle d'édition et le déposer sur mon panneau n'appelle rien de ce que je peux accéder au moment du design. J'étais à moitié fantasmé sur un moyen de détecter directement l'opération de drop, ou peut-être de détecter quand un contrôle est déplacé afin que je puisse déterminer où il devrait aller.
Des idées?
Mise à jour: OK, ça marche. Le contrôle de conteneur remplaçait déjà AlignControls pour gérer le placement des contrôles. Lorsque vous faites glisser le contrôle imbriqué et le supprimez, AlignControls est de nouveau appelé. J'ai ensuite comparé les nouvelles coordonnées du contrôle avec les autres contrôles de la liste et l'ai déplacé à la position appropriée.
J'ai dû faire face à quelques problèmes (principalement liés aux nombreux appels à AlignControls), mais le concept de base est assez simple. Merci à tous les commentateurs pour toute l'aide.
"l'ordre des contrôles enfants est déterminé par leur ordre de création" Quelle est la commande? Commande de tabulation? Voulez-vous les faire trier de haut en bas dans un panneau? – Serguzest
À l'heure actuelle, si vous sélectionnez le panneau, puis ajoutez des contrôles, les contrôles seront disposés dans l'ordre dans lequel vous les avez ajoutés. Pour réorganiser, vous devez couper et coller ou afficher le formulaire en tant que texte et le déplacer. J'ai maintenant ajouté une propriété ControlIndex à la TFlowPanel mais je veux que les utilisateurs du contrôle puissent simplement glisser et déposer pour réorganiser. Alors prenez Edit2 et déposez-le à la gauche de Edit1 et ils changeront comme par magie les positions sur le panneau. –