Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Перемещение формы за Panel


Автор: xloff 25.7.2007, 01:53
Есть форма (borderstyle=bsnone). Хочу реализовать перетаскивание формы за компонент Panel. Как можно реализовать это?

p.s. Прошу прощение, нечайно создал новость с этой темой. Без графики не увидел ссылки создания темы...

Автор: Rodman 25.7.2007, 08:35
из DRKB
Таскаем форму за её поверхность
Код

unit DragMain;

interface

uses
SysUtils, WinTypes, WinProcs,  Messages,
Classes, Graphics, Controls, Forms, Dialogs, StdCrtls;

type

TForm1 = class(TForm)
   Button1: TButton;
   procedure ButtonClick(Sender: TObject);
private        
   procedure WMNCHitTest(var M: TWMNCHitTest);
                message wm_NCCHitTest;
end;
var
Form1: TForm1;

implementation
{$R *.DFM}

procedure TForm1. WMNCHitTest(var M: TWMNCHitTest); 
begin
inherited;
if M.Result = htClient then
   M.Result := htCaption;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;

end.


Автор: Akella 25.7.2007, 09:32
из DRKB
Код

procedure TForm1.Panel2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
const
 SC_DragMove = $F012;
begin
  ReleaseCapture;
  Form1.Perform(WM_SysCommand, SC_DragMove, 0);
end;


Добавлено @ 09:34
Код

procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
const SC_DragMove = $F012; { a magic number }
{©Drkb v.3(2007): www.drkb.ru}
begin
  ReleaseCapture;
  Form1.perform(WM_SysCommand, SC_DragMove, 0);
end;

Автор: xloff 25.7.2007, 23:29
Akella, большое спасибо.

Автор: W1zArD 26.7.2007, 03:29
еще и через SendMessage можно ))))

Код

ReleaseCapture
SendMessage(handle, WM_SYSCOMMAND, $f012, 0);

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