高分求解!如何编程改变边框为bsNone的窗体的大小?可以利用WM_NCHitTest,也可以利用其他方法,但边框限制为bsNone。给我一个例子。

石榴刺猬 2001-11-11 08:54:50
如果还是不了解我要什么,那么做这样一个东西吧:
一个无边框的窗体,上有一个label。要求鼠标点击label然后拖动,出现改变窗体的大小的虚框,松开鼠标,窗体大小发生变化。
...全文
104 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
石榴刺猬 2001-11-12
  • 打赏
  • 举报
回复
好象从 TWinControl 继承下来的控件如果在顶层的话都会捕捉到这个消息。
但是它们下面的对象就接收不到这个消息了。为什么呢?
石榴刺猬 2001-11-12
  • 打赏
  • 举报
回复
呵呵,上面那个例子是发送 sc_DragMove 消息,当然不能改变大小啦。

感谢taxi(游少爷) 和 chechy(chechy)  提供的两个参数。
我提出的的问题基本是解决了,但是有一个问题,我不希望窗体出现边框。
也就是说如果我用一个Image放在窗体上的话,会有1-2个象素的边框。

稍微改变一下问题的描述吧:
如果我处理 WM_NCHitTest 消息的话,对于空白窗体是可以捕捉到的。
但是,如果窗体上有一个Panel的话,那么 WM_NCHITTest消息会被Panel捕捉到。
但是窗体却接收不到这个消息了。我想问问如何才能让鼠标在Panel上的时候,窗体
能够接收到WM_NCHitTest消息。

给一个测试程序:
interface
TForm1 = Class(TForm)
...
procedure WMNCHitTest(var Msg: TWMNCHitTest); message WM_NCHITTEST;
...
end;

在窗体的 WM_NCHITTEST 消息响应里面写
procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
begin
Caption := Format('%d:%d', [Message.XPos, Message.Ypos]);
inherited;
end;
然后在窗体上放一个Panel,可以看到,当鼠标在Panel上的时候,窗体的Caption不会变化了。如何能够在这种情况下让窗体也能接收到这个消息呢?

感谢各位的参与,请继续予以关注。
石榴刺猬 2001-11-11
  • 打赏
  • 举报
回复
加一个条件,窗体上有个alClient的Panel
cobi 2001-11-11
  • 打赏
  • 举报
回复
上面的代码改成labelMouseDown后,可以实现按住label移动窗体,并且会出现虚线框,但是改变大小却好象不行
cobi 2001-11-11
  • 打赏
  • 举报
回复
提供参考:怎样在点击拖动控件时拖动无标题窗体!
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SendMessage(Handle,WM_SYSCOMMAND,$F012,0);
end;
chechy 2001-11-11
  • 打赏
  • 举报
回复
呵呵,将BorderStyle设为bsNone
然后在Form声明中写:
protected
procedure CreateParams(var Params: TCreateParams); override;

代码是:

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited;

Params.Style := Params.Style or WS_THICKFRAME
end;


cobi 2001-11-11
  • 打赏
  • 举报
回复
重点关注
taxi 2001-11-11
  • 打赏
  • 举报
回复
protected
procedure CreateParams(var Params: TCreateParams); override;

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.Style := Params.Style or WS_SIZEBOX;
end;

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧