Главная страница | назад





Article #17099: Moving a form by clicking in its client area

 Question and Answer Database

FAQ2099D.txt   Moving a form by clicking in its client area
Category   :VCL
Platform    :All
Product    :All 32 bit  

Question:
How can I make a form move by clicking and dragging in the
 client area instead of on the caption bar?


Answer:
You could trap the mouse move messages, and move the form 
based on the net movement of the mouse. An easy way to 
achieve the same result is to make Windows believe the 
caption bar was clicked on by trapping and modifying the 
WM_NCHITTEST message.

Example:

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    procedure WMNCHitTest(var M: TWMNCHitTest); 
      message WM_NCHITTEST;
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
begin
  inherited;
 {If the client has been clicked, make Windows believe}
 {it was the caption bar that was clicked on}
  if  M.Result = htClient then
    M.Result := htCaption;
end;

7/16/98 4:31:28 PM
 

Last Modified: 01-SEP-99