Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Перетаскивание компонентов


Автор: Rumata 24.7.2006, 21:18
Подскажите, как перетащить компонент Label1 мышкой в режиме выполнения проги. Please//  

Автор: 586 24.7.2006, 23:24
Для любого компонента:
Код
int X0, Y0;
bool bMove = false;

void __fastcall TForm1::Label1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
 bMove = true;
 X0 = X;
 Y0 = Y;
}

void __fastcall TForm1::Label1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
 if(bMove)
 {
  ((TControl *)Sender)->Left += X - X0;
  ((TControl *)Sender)->Top += Y - Y0;
 }
}

void __fastcall TForm1::Label1MouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
 bMove=false;
}


Для любого компонента, исключая Label и Image:
Код
void __fastcall Form1::Panel1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
 ReleaseCapture();
 ((TControl*)Sender)->Perform(WM_SYSCOMMAND, 0xF012, 0);
}
 

Автор: Link90 25.7.2006, 06:30
Цитата

Для любого компонента, исключая Label и Image

На этот случай можно использовать компонент TStaticText, принципиально от TLabel он не отличается (ИМХО только тем, что можно рамку для текста сделать), но его можно таскать в RunTime при помощи кода, который привёл 586
Цитата

Код

void __fastcall Form1::Panel1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
 ReleaseCapture();
 ((TControl*)Sender)->Perform(WM_SYSCOMMAND, 0xF012, 0);
}

 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)