为了程序美观,大家经常会使用图片做为背景,把WINDOWS标题栏进地隐藏,这时候需要自己编码窗口移动代码。
以前为了实现这种效果,我也写过非常复杂的代码来实现,但效果总是不好。
通过百度,发现一种比较方便的方法,共享一下。
在FORM上我放置两个控件,image和label,image大小和form一致,简单点可以把image的align属性设置为alClient
label放置在image的TOP位置,autosize设置为false,caption设置为空.大小模拟标题栏大小。
label的transparent属性设置为true(透明)
然后在label的mousedown事件中编写两行代码
procedure TForm1.lblMoveMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture; //释放鼠标的捕获状态;
(Form1 as TWinControl).PerForm(wm_SysCommand,sc_DragMove,0);//向窗体发送移动消息;
end;
编译一下,可以发现鼠标在label区域按下进行拖动,效果和按在正常的windows标题栏是一模一样的。