До того, как Delphi 2006 (я думаю) представил TFlowPanel и TGridPanel, я сделал элемент управления, который был похож на концепцию. Он по-прежнему выполняет несколько функций, которые не выполняются этими элементами управления, и при обновлении своего кода до Delphi 2009 я решил добавить к этому также несколько улучшений.
В настоящий момент порядок дочерних элементов управления определяется порядком их создания. FlowPanel и GridPanel показывают лучший способ с ControlIndex и другими отфильтрованными свойствами, но мне было интересно, есть ли способ управлять переупорядочением перетаскиванием во время разработки? Насколько я могу судить, перетаскивание элемента управления для редактирования и перетаскивание его на панель не вызывает ничего, к чему я могу получить доступ во время разработки.
Я наполовину фантазировал о способе либо непосредственно обнаружить операцию сброса, либо, возможно, определить, когда перемещается элемент управления, чтобы я мог определить, куда он должен перейти.
Есть идеи?
Обновление:
ОК, все заработало. Контейнерный элемент управления уже переопределял AlignControls для управления размещением элементов управления. Когда вы перетаскиваете вложенный элемент управления и опускаете его, снова вызывается AlignControls. Затем я сравнил новые координаты элемента управления с другими элементами управления в списке и переместил его в соответствующую позицию.
Было несколько проблем, с которыми мне пришлось работать (в основном, связанных с многочисленными вызовами AlignControls), но основная концепция достаточно проста. Спасибо всем комментаторам за помощь.