注册 登录
编程论坛 VB6论坛

怎么判断打开的是哪个窗体?

wxflw 发布于 2012-11-16 09:06, 1827 次点击
我有3个子窗体在form3窗体我要判断我已经打开了form1还是form2,form1和form2永远不会同时打开!
另外form3打开状态下,form1或form2的Enabled属性是false状态
:我要实现的目的是在form1和form2都能show出form3,打开form3的同时form.Enabled = False
  在form3退出的时候,判断form3是从form1和form2哪个窗体打开的,
  如果是从form1打开的,form3的Form_Unload执行Form1.Enabled = True
  如果是从form2打开的,form3的Form_Unload执行Form2.Enabled = True
这个咋整?请指点一下啊!先谢谢了!
7 回复
#2
ccwu22012-11-16 09:15
.Enabled?
.Visable?
#3
wxflw2012-11-16 10:13

 .Visable是控制控件可见不可见。如果窗体没打开这个属性怎么检查!所以不是我要的!
.Enabled这个是设置控件能不能操作的,不是我要的
我用过这个!
Dim aForm As Form
For Each aForm In Forms
  If aForm.Name = "Form1" Then
     Form1.Enabled = True
  End If
  If aForm.Name = "Form2" Then
     Form2.Enabled = True
  End If
Next
没效果啊!

[ 本帖最后由 wxflw 于 2012-11-16 10:15 编辑 ]
#4
风吹过b2012-11-16 11:53
这样吧。

你 打开 Form3 的时候使用一个 公用过程来打开。
这个过程定义在 模块里的。

模块里的内容
Dim Fobj As Object    '定义在模块中的。为模块的局部变量

Public Sub openForm3(obj As Object)
Set Fobj = obj        '保存传进来的对象
Fobj.Hide             '隐藏
Form3.Show            '显示 form3
End Sub

Public Sub CloseForm3()
'unload form3        '关闭 FORM3 ,如果是按下面在关闭事件中写的,那么不需要执行这句。
Fobj.Show           '显示前面保存的 Form
End Sub


-----------------------
打开 form3 时的方法:
在 FORM1 或 FORM2 中调用
call openForm3(me)            'me 代表窗体本身。

在 form3 关闭事件中写到:
call CloseForm3()

在这些情况下,你只要再保证 form1 和 form2 不会同时出现就可以了。
---------------
下午测试过,在VB6精减版通过。

[ 本帖最后由 风吹过b 于 2012-11-16 15:43 编辑 ]
#5
ccwu22012-11-16 13:28
Public Enum frmOpen
    frmAbout = 0
    frmJEMulti = 1
    frmJESingle = 2
    frmJJMulti = 3
    frmJJSingle = 4
    frmConvert = 5
End Enum

Public FormBool() As Boolean
----------------------------------
Private Sub Form_Load()
    FormBool(frmOpen.frmJJSingle) = True
    Frame1.Caption = Me.Caption
End Sub
----------------------------------
每次开某个窗体都一定会跑它的Form_Load()
记录起来就好了

Private Sub Form_Unload(Cancel As Integer)
If FormBool(0) = True Then Unload frmAbout
If FormBool(1) = True Then Unload frmJEMulti
If FormBool(2) = True Then Unload frmJESingle
If FormBool(3) = True Then Unload frmJJMulti
If FormBool(4) = True Then Unload frmJJSingle
End Sub

我这只是为了直接关闭主程式时不会被有些页面卡住
我的附属页面是内嵌在主页面的Frame中
开一个Dialog来仿制MDI Form做成Windows explorer的样式
看你需求吧,每次只讲一小部分谁知道你到底要做啥....
#6
疯子疯了2012-11-16 20:11
你要的是不是 form.hide和form.show  ?
首先是模块
代码:
程序代码:
Public openformcode As Long
Public formcode1 As Boolean
Public formcode2 As Boolean
Public formcode3 As Boolean
Sub main()     '注意工程属性里的启动窗体调到 Sub main()
formcode1 = False
formcode2 = False
formcode3 = True
Form3.Show    '启动窗体3
End Sub
formcode1,formcode2,formcode3代表每一个窗体是否打开
form3只要不停检测formcode1,formcode2,formcode3的值就知道哪个窗体开着了


从form1进入form3时 openformcode="form1"     formcode1 = False   formcode3 = True  me.Enable = False
从form2进入form3时 openformcode="form2"     formcode2 = False   formcode3 = True  me.Enable = False
从form3退出时 在unload过程中只要检测 openformcode的值就能知道从哪个窗体退出了  别忘了设置formcode1,formcode2,formcode3的值
#7
青春无限2012-11-17 10:14
0学习
#8
wxflw2012-11-17 20:01
还是版主的方法比较容易接受点,谢谢6楼的,虽然6楼的不是我要的,还是要谢谢!毕竟你在为我的问题寻求解决方法,让你费心了!也谢谢2楼和5楼的,你的方法给了我不少的启发!谢谢大家!
1