Как выбрать и переместить несколько элементов управления во время выполнения
Я создал несколько пользовательских элементов управления (TCustomControl) в Delphi, чтобы я мог перемещать их во время выполнения, но только один за другим. Как я могу выбрать два или более из этих элементов управления снова во время выполнения и перемещать их все вместе с помощью мыши?
Спасибо.
4 ответа
Однажды я использовал компонент с именем handles, что, если я правильно помню, не было слишком сложно обновить его до более поздних версий Delphi и с поддержкой множественного выбора.
Другое коммерческое решение будет от DevExpress: LayoutControl. Это позволяет перетаскивать, группировать, полностью перегруппировать, скрывать и добавлять компоненты во время выполнения.
Если вы не можете найти более простой способ, вы всегда можете сделать это вручную. Держите список всех выбранных элементов управления. Когда начинается операция перетаскивания, создайте другой список, в котором будут значения TPoint, указывающие, как далеко по обеим осям свойства Top и Left каждого элемента управления находятся от положения мыши. Затем, когда пользователь перетаскивает элемент управления, постоянно обновляйте выбранные элементы управления, чтобы они оставались в соответствующих относительных положениях к указателю мыши.
Как насчет коммерческого решения? На снимке экрана показаны инструменты выравнивания, которые предполагают, что он поддерживает множественный выбор.