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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2013, 11:27   #1
StoxFT
 
Регистрация: 15.12.2012
Сообщений: 7
Печаль Перетаскивание формы в FireMonkey

Здравствуйте, сразу к делу: пытаюсь научить программу перетаскиваться не за заголовок (которого нет), а за панель. Работа с координатами приводит к фейлу - форма дрожит и перемещается хаотично, мне же нужен аналог VCL'овского Perform. Может кто подсказать как можно в FMX сделать это или тыкнуть носом в литературу которую я умудрился пропустить?
StoxFT вне форума Ответить с цитированием
Старый 06.09.2013, 21:38   #2
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Сделай через события формы OnMouseDown, OnMouseMove, OnMouseUp
ZuBy вне форума Ответить с цитированием
Старый 07.09.2013, 02:57   #3
asmprog
Пользователь
 
Регистрация: 10.08.2013
Сообщений: 67
По умолчанию

Цитата:
Сообщение от ZuBy Посмотреть сообщение
Сделай через события формы OnMouseDown, OnMouseMove, OnMouseUp
не забывая, про http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
asmprog вне форума Ответить с цитированием
Старый 07.09.2013, 16:14   #4
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Я имел ввиду такой код...

Код:
var
  Moving:boolean = false;
  MovPoint := TPoint;

procedure TQBForm.MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Moving := WindowState <> wsMaximized;
  MovPoints := Point(X, Y);
end;

procedure TQBForm.MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
var
  PointXY: TPoint;
begin
  if Moving then
  begin
    PointXY := ClientToScreen(Point(X - MovPoints.X, Y - MovPoints.Y));
    Left := PointXY.X;
    Top := PointXY.Y;
  end;
end;

procedure TQBForm.MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Moving := false;
  MovPoints := Point(0, 0);
end;
ZuBy вне форума Ответить с цитированием
Старый 07.09.2013, 16:40   #5
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

Так удобнее и быстрее:
Код:
if ReleaseCapture then
    Form1.Perform(WM_SYSCOMMAND, $F012, WM_MOVING);
uberchel вне форума Ответить с цитированием
Старый 07.09.2013, 16:45   #6
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Цитата:
Сообщение от uberchel Посмотреть сообщение
Так удобнее и быстрее:
Код:
if ReleaseCapture then
    Form1.Perform(WM_SYSCOMMAND, $F012, WM_MOVING);
Не спорю, сам пользуюсь. Но при вызове зависает форма, что весьма заметно.
ZuBy вне форума Ответить с цитированием
Старый 07.09.2013, 20:29   #7
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

Не знаю, у меня не чего не тормозила, если что еcть еще вариант, использовать вместо perform, sendMessage(Form1.Handle, WM_SYSCOMMAND, $F012, WM_MOVING);
uberchel вне форума Ответить с цитированием
Старый 08.09.2013, 09:17   #8
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Цитата:
Сообщение от uberchel Посмотреть сообщение
Не знаю, у меня не чего не тормозила, если что еcть еще вариант, использовать вместо perform, sendMessage(Form1.Handle, WM_SYSCOMMAND, $F012, WM_MOVING);
при вызове ReleaseCapture форма замирает на некоторое время, и только потом можно совершать перемещение.

это хорошо заметно например в форме где используется Таймер, разного рода визуализация, динамические графики и подобное...
ZuBy вне форума Ответить с цитированием
Старый 08.09.2013, 12:26   #9
StoxFT
 
Регистрация: 15.12.2012
Сообщений: 7
По умолчанию

Насколько я помню - в FireMonkey не реализован Perform. Или я ошибаюсь?

Последний раз редактировалось StoxFT; 08.09.2013 в 12:29.
StoxFT вне форума Ответить с цитированием
Ответ


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

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

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


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