C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Тянем-потянем..., Как перетащить форму не за CaptionBar
Revan
Отправлено: 28.09.2005, 14:52


Не зарегистрирован







Кто-нибудь может сказать, как можно перемещать форму за какойнибудь из компонентов на этой форме (за Image например) или, на худой конец, просто за тело формы. В Делфях у меня есть пример, но в Билдере то же самое осуществить пока не могу.
CyberMind
Отправлено: 28.09.2005, 17:27


Ученик-кочегар

Группа: Участник
Сообщений: 29



Пишем в обработчике события OnMouseDown формы или компонента.

ReleaseCapture();
this->Perform(WM_SYSCOMMAND,0xF012,0);

Теперь все перемещается.
Revan
Отправлено: 29.09.2005, 08:38


Не зарегистрирован







Уточнение: в моем проекте у главной формы BorderStyle = bsNone.
Как быть теперь?
Revan
Отправлено: 29.09.2005, 08:43


Не зарегистрирован







Прошу прощения, все работает. Спасибо!
Просто я вместо 0xF012 написал SC_MOVE.
Konstantine
Отправлено: 29.09.2005, 11:17


Мастер участка

Группа: Модератор
Сообщений: 545



сам такое юзаю smile.gif
CODE
void __fastcall TForm1::Form1MouseMove(TObject *Sender, TShiftState Shift,
     int X, int Y)
{
 if((Old_X!=-1)&&(Old_Y!=-1))
  {if(Shift.Contains(ssLeft))
    {Left=Left+X-Old_X;
     Top=Top+Y-Old_Y;}
   else {Old_X=-1;Old_Y=-1;}
   }
 else
   if(Shift.Contains(ssLeft)) {Old_X=X;Old_Y=Y;}
}
//---------------------------------------------------------------------------


и на этот обработчик цепляешь OnMouseMove всех панелек на форме...
да, ещё — Old_X и Old_Y — это int , описываешь в секции pivate формы

Вернуться в Вопросы программирования в C++Builder