Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2007, 10:01   #1
aesoem
Форумчанин
 
Регистрация: 24.12.2007
Сообщений: 288
По умолчанию Перетаскивание объектов по программе

Как можно сделать панель, в каторую можно добавить к примеру Memo1 или CheckBox. Но так чтоб её можно было таскать по форме пользователю???
aesoem вне форума Ответить с цитированием
Старый 25.12.2007, 10:21   #2
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Тема была и не один раз
Код:
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
const
  SC_DragMove = $F012;
begin
  ReleaseCapture;
  Panel1.perform(WM_SysCommand,SC_DragMove,0);
end;
ссылку на процедуру добавьте в событие OnMouseDown для всех объектов, за которые планируете таскать панель
_Dmitry вне форума Ответить с цитированием
Старый 25.12.2007, 10:38   #3
aesoem
Форумчанин
 
Регистрация: 24.12.2007
Сообщений: 288
По умолчанию

неполучается
aesoem вне форума Ответить с цитированием
Старый 25.12.2007, 10:44   #4
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Что не получается?
Бросьте на форму одну панель, она будет Panel1.
В инспекторе объектов дважды щелкните на событии OnMouseDown для панели, появится заготовка процедуры.
Наполните ее приведенным содержимым.
Запускайте программу на исполнение и таскайте мышкой панель.
_Dmitry вне форума Ответить с цитированием
Старый 25.12.2007, 12:51   #5
aesoem
Форумчанин
 
Регистрация: 24.12.2007
Сообщений: 288
По умолчанию

О заработало, наверно я папал на ChekBox когда 1 раз делал.. Спасибо, а можно теперь в подробностях каждое слово, я ж должен выучить запомнить, а так зазубриваьб ерунда будет !!! А как паймёш, сможеш обьяснить на русском так и учить не надо
aesoem вне форума Ответить с цитированием
Старый 27.12.2007, 20:42   #6
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Сам так делал, всё работало, но почему - можно только догадываться.

SC_DragMove = $F012; - ну, это просто значение которое передается в функцию. Везде где читал, написано что это "магическое число". Думаю, что магия здесь ни причем, просто в двоичном виде установлены некие флаги.

ReleaseCapture; - что делает не знаю, возможно "захват" мыши.

Panel1.perform(WM_SysCommand,SC_Dra gMove,0); - панель посылает сама себе сообщение. По всей видимости это сообщение заставляет считать, что схватили заголовок окна, ведь TPanel - это "оконный" класс и от классического окна программы отличается только внешним видом и с точки зрения системы ничем не отличается от формы. Т.е. вся поверхность элемента имитируется как заголовок.

Впрочем, на 100% не уверен.
Jeni вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перетаскивание geniy Компоненты Delphi 9 12.01.2009 02:10
Перетаскивание окон werat Свободное общение 2 18.08.2008 11:58
Перетаскивание обьектов Witaliy Общие вопросы Delphi 6 27.04.2008 19:22
Перетаскивание формы s-force Общие вопросы Delphi 13 07.09.2007 15:38