закрепление панели во фрейме с помощью delphi

У меня есть приложение, сделанное с рамками. У меня есть панель на раме, которая мне нужна, чтобы научиться плавать и стыковаться. Я не знаю, как этого добиться. Я посмотрел на элементы управления стыковкой devexpress, но они работают только с формами.

Думаю, мне нужно проработать 2 вопроса.

  1. как сделать панель подвижной и изменяемой.
  2. как добавить логику стыковки во фрейм?

любая помощь будет оценена по достоинству.


person Connie McBride    schedule 03.02.2021    source источник
comment
но они работают только с формами. Спросите себя, как вы сможете разместить это без размещения в форме?   -  person David Heffernan    schedule 04.02.2021


Ответы (1)


1) TPanel можно перемещать и изменять размер

Панель всегда может перемещаться внутри своего контейнера (форма, фрейм, другая панель, полоса прокрутки и т. Д.) И изменять ее размер. Вам просто нужно изменить его свойства Top, Left, width и height. Чтобы сделать его перетаскиваемым, вам необходимо использовать событие MouseDown, MouseMove, MouseUp, обнаруживать и обрабатывать необходимое использование мыши для перетаскивания.

Вы даже можете переместить TPanel из своего контейнера в другой, изменив его свойство Parent. Например, вы можете переместить панель из TForm в другой TForm. Это то, что вы будете использовать для создания плавающей панели.

2) Плавающий TFrame

Вы не можете использовать TFrame как плавающую форму. Для этого вам понадобится TForm.

Обратите внимание, что вы можете использовать TForm так же, как TFrame. Используйте CreateParented, чтобы создать форму и прикрепить ее к контейнеру, например TFrame.

person fpiette    schedule 04.02.2021
comment
На самом деле, я думал о преобразовании фреймов в формы, а затем встраивании их в фрейм, но не знал, как это будет работать (не очень хорошо в навыках написания компонентов). - person Connie McBride; 04.02.2021
comment
Немного поэкспериментируйте. Затем, когда вы застряли, задайте новый вопрос, относящийся к этой проблеме. - person fpiette; 04.02.2021
comment
Если вам нравится мой ответ, отметьте его как принятый (отметка слева от ответа) и / или проголосуйте за него (стрелка вверх слева от моего ответа). - person fpiette; 04.02.2021