showmodal则不能同时开其它FORM,fsNormal则会被其它FORM盖住,如何可预览又可同时开其它FORM ( 积分: 100 )

  • 主题发起人 主题发起人 sandal
  • 开始时间 开始时间
S

sandal

Unregistered / Unconfirmed
GUEST, unregistred user!
设计打印预览时,无论QuickReport还是PrintDbGridEh,如果要预览,其FORM必须为fsNormal,
若FormStyle=fsStayOnTop,预览时, 预览画面会在当前FORM的后面.
请教:
如何可预览又可同时开其它FORM
 
设计打印预览时,无论QuickReport还是PrintDbGridEh,如果要预览,其FORM必须为fsNormal,
若FormStyle=fsStayOnTop,预览时, 预览画面会在当前FORM的后面.
请教:
如何可预览又可同时开其它FORM
 
StayOnTop肯定会被挡住的拉,不然怎么叫StayOnTop
用MDI窗体罗
 
楼上说的对,
非得设置成fsStayOnTop么?
 
我知道你为什么设成 fsStayOnTop了,是不是你没有采用MDI窗体作为主窗体,而子窗体打开的时候如果不设成fsStayOnTop,则点击主窗体就会把子窗体挡到后面。
你应该把主窗体设成 fsMDIForm,所有子窗体设成 fsMDIChild,就不需要把子窗体设成 fsStayOnTop,也就会出现预览窗体被fsStayOnTop窗体挡住的情况了
 
plenilune168
谢谢你的回复,我有几十个子窗体, 如果把它们由fsNormal改成fsMDIChild,有其它地方
要修改吗? SMI的窗体只要show就可以了,MDI的子窗体如何激活?
谢谢
 
我试了MDI程式,感觉不能把整个系统改成MDI窗体, 还是继续使用SDI窗体.SDI就不能解
决上面的问题吗?
 
你直接把主窗体的Visable改成false;
 
那何SHOW回来呢? QR和PringDbGridEh都没有OnClose事件.
 
你说的是不是像potoshop一样的那些小面板样的窗体呀,不会被主窗体覆盖,
我也想知道,高人指点呀?
 
要求很清晰,
1.当前FORM存在的同时, 可以打开其它的FORM,点击主FORM时,当前FORM不会不见.所以我
把当前FORM的FormStyle=fsStayOnTop, 用Show不用Showmodal
2.当前FORM里有一个打印预览按钮, 点击按钮可以正常预览, 不会说预览画面躲在当前
FORM的下面.
 
我觉得肯定是要改成MDI窗体的,你这种情况如果要改成来应该很难,至少我还没有想到怎么改,即使能够改,我想付出的代价也比改成MDI大。我最初也是用SDI,但是发现会有很多问题,你现在遇到的就是其中一个
采用MDI
(1)主窗体设成 fsMDIForm,所有子窗体设成 fsMDIChild,;
(2)除了主窗体外,所有子窗体都设成动态建立的,不像你原来都是静态建立(因为看得出你只是用show来访问,说明程序一运行就全部建立了,只不过没有显示)。即在菜单 Project-->Options 的Forms页,左边的 auto-create forms 只留下主窗体,其他的都移到右边
(3)子窗体调用代码,窗体实例化,实例化后不需要show窗体就会直接显示出来
Form1:=TForm1.Create(MainForm)
(4) 窗体释放代码
窗体的OnClose事件加上一句:Action:=caFree;
 
没有找到最合适的答案,
非感谢plenilune168的答复
散分.
另外,请问做ERP系统,一般用MDI多,还是SDI多?
 
做成 MDI 比较好控制,MDI并不等于说一个模块一定要打开多个,只不过这种模式的程序Delphi支持比较好,其实对于管理软件很多模块都只能打开一个实例的,创建的时候判断一样就可以了,如果不存在,则新建,如果已经打开,则把焦点移到那个窗体
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部