delphi中弹出窗体

这是现在的“弹出窗体”的代码:
procedure TShow1Form.Button1Click(Sender: TObject);
begin
TestForm := TTestForm.Create(Application);
TestForm.Show;
end;

1.如何实现,弹出的窗体,用户无法移动?
2.弹出子窗体后,如果没有关闭的话,主窗体不能进行任何操作。
...全文
178 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
kaikai_kk 2012-09-12
  • 打赏
  • 举报
回复
可以改变窗体大小吗,即允许通过鼠标在边角上拉大或者缩小窗体吗?
iamduo 2012-09-12
  • 打赏
  • 举报
回复
最大化。用户就不能移动了。
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

TestForm.ShowModal;
[/Quote]
可以,已经解决了问题2。。。
还剩问题1咯。。。
kaikai_kk 2012-09-12
  • 打赏
  • 举报
回复
TestForm.ShowModal;
hsfzxjy 2012-09-12
  • 打赏
  • 举报
回复
像9楼,屏蔽掉WM_MOVE消息。。
注意:一定要inherited;!!!!!!!!!!
  • 打赏
  • 举报
回复
bsNone窗体,考虑过,但是,就得写个button之类的关闭窗体了。。。
hsfzxjy 2012-09-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
引用 5 楼 的回复:

testform不处理WM_MOVE就可以了

哪里处理呢?有属性可以直接设置吗?
[/Quote]
TTestForm=class(TForm)
protected
procedure WndProc(Msg:TMessage);override;
//.....
end;
implementation

procedure TTestForm.WndProc(Msg:TMessage);
begin
if Msg.Message=WM_MOVE then exit;
inherited;
end;
kaikai_kk 2012-09-12
  • 打赏
  • 举报
回复
提供一个方法,不过还不如用bsNone窗体

procedure TForm1.FormCreate(Sender: TObject);
var
_Menu:HMENU;
begin
BorderIcons:=BorderIcons-[biMaximize];

_Menu:=GetSystemMenu(Handle,False);
DeleteMenu(_Menu,SC_Move,MF_BYCOMMAND);
DeleteMenu(_Menu,SC_Size,MF_BYCOMMAND);
end;
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

testform不处理WM_MOVE就可以了
[/Quote]
哪里处理呢?有属性可以直接设置吗?
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

可以改变窗体大小吗,即允许通过鼠标在边角上拉大或者缩小窗体吗?
[/Quote]
不允许改变大小
hsfzxjy 2012-09-12
  • 打赏
  • 举报
回复
testform不处理WM_MOVE就可以了

16,747

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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