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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2010, 22:03   #1
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию Перетаскивание формы без бордюров

Всем добрый вечер, нашёл бы в поиске (как обычно делаю), но не могу правильно сформулировать вопрос. По этому и такое кривое название темы (за что извиняюсь).

Имеется форма со свойством borderStyle:=bsNone.
На ней image с фоном. Как сделать чтобы в любом месте формы (подрузамиваю, что там image на всю форму растянут) можно было нажать клавишой мыши и двигать формой так же как и если бы там был заголовок формы.
Тут пример:
Изображения
Тип файла: jpg фон.jpg (127.7 Кб, 134 просмотров)

Последний раз редактировалось dr.Chas; 10.02.2010 в 22:13. Причина: рисунок криво вставлялся
dr.Chas вне форума Ответить с цитированием
Старый 10.02.2010, 23:05   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Вариант 1.
a) Ставим хук (локальный) на сообщения вашего приложения. А именно WH_MOUSE
b) Ловим соответствующие WM_LBUTTONDOWN, WM_LBUTTONUP, WM_MOUSEMOVE.
c) разумеется, при нажатии перевести в координаты для экрана (ClientToScreen) координаты (POINT) нажатия и движения мыши.
d) При нажатии, ставить свою переменную (к примеру boolean = true) т.е. идентифицировать нажатие
e) после нажатия вызывать SetCapture (т.е. ставим капчу на мышь)
f) на WM_MOUSEMOVE проверяем нашу boolean переменную, если true, то высчитываем просто (X = current_x - down_x (относительно окна, а не экрана)) вроде так, ну для Y аналогично (если может и ошибся, сами додумаете)
g) по WM_LBUTTONUP вызываем ReleaseCapture (освобождаем капчу мыши)

Ну как то так

p.s. а еще внизу страницы список похожих тем, стоило бы заглянуть туда сначала
BOBAH13 вне форума Ответить с цитированием
Старый 10.02.2010, 23:12   #3
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

Спс, попробую.

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
p.s. а еще внизу страницы список похожих тем, стоило бы заглянуть туда сначала
Ну как бы не первый год на форуме, а вот список похожих тем появляется после того как создаёшь тему. Так что сначала я не могу туда заглянуть в любому случае

Цитата:
Сообщение от dr.Chas Посмотреть сообщение
Ну вроде бы не первый год на форуме, а вот список похожих тем появляется после того как создаёшь тему. Так что сначала я не могу туда заглянуть в любом случае
А это пока по поиску не погуляешь всласть

Последний раз редактировалось mihali4; 10.02.2010 в 23:20.
dr.Chas вне форума Ответить с цитированием
Старый 10.02.2010, 23:15   #4
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

Код:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
Form1.Perform(WM_SysCommand,$F012,0); //где Form1 имя Вашей формы
end;
FaTaL вне форума Ответить с цитированием
Старый 10.02.2010, 23:19   #5
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

В обработчике OnMouseDown вашего Image пишете такой код:

Код:
  ReleaseCapture;
  SendMessage( Self.Handle, WM_SYSCOMMAND, $F012, ( X shl 16 ) or Y );
UPDATE:
Прошу модератора удалить это сообщение.

From Stilet: Не обязательно его удалять. Это не дубль а дополнительный вариант.

Последний раз редактировалось Stilet; 11.02.2010 в 08:47.
maxionans вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ограниченное перетаскивание формы Maxs Общие вопросы Delphi 1 24.10.2009 21:05
Перетаскивание формы Nester Общие вопросы Delphi 2 24.07.2009 12:35
Перетаскивание формы при BorderStyle := bsNone lexaltd Общие вопросы Delphi 3 25.03.2009 14:57
Перетаскивание формы. IVANSour Общие вопросы Delphi 2 03.02.2009 22:06
Перетаскивание формы s-force Общие вопросы Delphi 13 07.09.2007 15:38