Перейти к содержанию
Fire Monkey от А до Я
  • 0

Как поймать перемещение формы?


POV

Вопрос

Для VCL примеров полно, но тут никакой реакции на повторение этих примеров нет.

Примеры вот такого типа

BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_MOVING, System::Messaging::TMessage, OnMove)
END_MESSAGE_MAP(TForm)
MESSAGE void __fastcall OnMove(System::Messaging::TMessage &Message);

Может оно как-то принципиально не так в FMX делается?

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Администраторы

Могу только предложить перекрыть метод 

procedure TCommonCustomForm.SetBounds(ALeft, ATop, AWidth, AHeight: Integer); virtual;

Этот метод всегда вызывается, когда меняется положение или размер формы. 

P.S. Надо не забыть вызвать базовый метод.

Ссылка на комментарий
  • 0

Мммм.. сделал я 

virtual void __fastcall SetBounds(int ALeft, int ATop, int AWidth, int AHeight);

Этот метод действительно вызывается. Но значения координат и размеры не присваиваются никуда. В этом методе присвоить нельзя - оно начинается вызываться бесконечно.. как быть чтобы не по-колхозному?

Изменено пользователем Brovin Yaroslav
Ссылка на комментарий
  • 0

Ну как код.. предельно тупой код ))

void __fastcall TfrmMain::SetBounds(int ALeft, int ATop, int AWidth, int AHeight)
{
// Left = ALeft;
// Top = ATop;
// Width = AWidth;
// Height = AHeight;
Caption = ALeft;
}

Это неверно? (я имею в виду закомменченые присваивания)

Ссылка на комментарий
  • 0

Всё, сообразил





void __fastcall TfrmMain::SetBounds(int ALeft, int ATop, int AWidth, int AHeight)
{
TForm3D::SetBounds(ALeft, ATop, AWidth, AHeight);

И вот тогда уж вопросы отвлеченные чтобы тему не создавать:

 

1) за годы пользования делфями народ наводнил инет вопросом о событии перемещения формы. Отчего этот event в новой библиотеке ввести не захотели?

2) чекбокс и радиобаттон по событию онклик имеют пока ещё не изменённое состояние. В отличие от VCL. Это сознательно сделано или недоработка?

Изменено пользователем POV
Ссылка на комментарий
  • 0
  • Администраторы
  1. Я думаю, что событие для формы OnMove не будет лишним. От себя скажу, что не видел среди реквестов на добавление этого события. Но согласен, что оно будет полезным.
  2. На сколько я знаю, Click у нас приходит до OnMouseUp. Не могу вам так с лёту сказать почему. Но на моей памяти, что-то было связано с экшенами. 
  3. Если хочется получить актуальное состояние изменения CheckBox или RadioButton используйте специальное событие OnChange.
Ссылка на комментарий
  • 0

Спасибо за помощь..

 

ПыСы

1) Касаясь OnMove формы вопрос частый - люди пытаются делать "прилипающие" окошки как в winamp.

3) Может я чего не так делал, но OnChange случается лишь при потере фокуса контрола. Та же ерунда с Едитом, пришлось вопреки привычке использовать OnChangeTracking

 

если не сложно, то не посмотрите вон ту старую мою тему? ...там я так и не смог ничего сделать.

http://fire-monkey.ru/topic/1116-kmmeru-iz-freima-peredat-glavnoi-forme/

Изменено пользователем POV
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...