注册 登录
编程论坛 VFP论坛

两个顶层表单 如何用命令指定,一个表单在前,一个在后

laibinhua 发布于 2024-05-08 10:46, 440 次点击
请教:两个顶层表单(form1,from2) 如何用命令指定,一个表单在前,一个在后
我用这个方法时灵时不灵
PUBLIC pform,pform2
pform1=0
pform2=0
For lnFor=1 to _VFP.Forms.Count
    if  _VFP.Forms(lnFor).name=''
        pform1=lnFor
    ENDIF
ENDFOR
For lnFor=1 to _VFP.Forms.Count
    if  _VFP.Forms(lnFor).name='form2'
        pform2=lnFor
    ENDIF
ENDFOR
然后我就和这个方式来控制那个在最前面
_VFP.Forms(pform2).AlwaysOnTop=.f.
_VFP.Forms(pform).AlwaysOnTop=.t.
  
10 回复
#2
laowan0012024-05-08 10:50
试试Zorder()
#3
kangss2024-05-08 11:00
两个顶层表单,有点儿类似2个exe,在状态栏中能看到2个窗口标题,鼠标、键盘可以切换激活、置顶状态。
你这样有啥特殊需求吗?
#4
laibinhua2024-05-08 13:16
回复 3楼 kangss
用于定时切换两个表单的显示。这两个表单没有最大最小关闭按钮没有caption,直接都是全屏。一个显示1分钟,然后另一个显示15秒,以此循环展示数据

[此贴子已经被作者于2024-5-8 13:17编辑过]

#5
laibinhua2024-05-08 13:32
回复 2楼 laowan001
大佬,我改成这样没有一点效果,不知什么地方写错了
PUBLIC pform,pform2
pform1=0
pform2=0
For lnFor=1 to _VFP.Forms.Count
    if  _VFP.Forms(lnFor).name='form1'
        pform1=lnFor
    ENDIF
ENDFOR
For lnFor=1 to _VFP.Forms.Count
    if  _VFP.Forms(lnFor).name='form2'
        pform2=lnFor
    ENDIF
ENDFOR

_VFP.Forms(pform2).zorder(0)
_VFP.Forms(pform1).zorder(1)
#6
my23182024-05-08 15:14
回复 4楼 laibinhua
没必要,直接一个表单,上面的控件,按你的要求设置可见和不可见就行了
#7
laowan0012024-05-08 15:46
_VFP.Forms(pform2).show
试试
#8
shizi02024-05-09 00:32
Declare Long SetWindowPos In "user32" long hwnd,long hwndInsertAfter,long x,long y,long cx,long cy,long wFlags
#9
csyx2024-05-09 06:57
以下是引用laibinhua在2024-5-8 13:16:16的发言:

用于定时切换两个表单的显示。这两个表单没有最大最小关闭按钮没有caption,直接都是全屏。一个显示1分钟,然后另一个显示15秒,以此循环展示数据

换个思路,设置表单可见性 Visible

[此贴子已经被作者于2024-5-9 07:17编辑过]

#10
laibinhua2024-05-11 14:48
用visible的方法也是我最早的方法,这个方法不行,可能是定时器的原因,到秒时没有及时show hide导致出问题。现在用了其他方法已实现
#11
kangss2024-05-11 15:09
1个表单就行了,Pageframe:page1、page2,定时切换
1