如何判断窗体是否是子窗体?

张吉Jerry 2010-10-26 10:51:29
想实现的需求就是禁止直接打开窗体,只能作为其他窗体的子窗体打开。请问要用什么方法?
...全文
221 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2010-10-26
  • 打赏
  • 举报
回复
[Quote]Parent 属性
参阅参阅参阅参阅使用 Parent 属性可以引用控件、节或包含其他控件的控件的父对象。如果父对象为控件则 Parent 属性返回的是控件对象;如果父对象为 Microsoft Access 对象,则返回的是 AccessObject 对象。只读。

expression.Parent
expression 必需。返回“应用于”列表中的一个对象的表达式。

说明
在多个窗体或报表中插入了子窗体或子报表时,可使用 Parent 属性决定当前的父对象。

例如,可能在一个窗体和一个报表中都插入了“订单明细”子窗体。以下示例使用 Parent 属性来引用“订单ID”字段,该字段在主窗体和主报表中都存在。在子窗体上的绑定控件中可以输入该表达式。

=Parent!OrderID

标签控件的 Parent 属性是标签控件链接的控件。选项组中的复选框、选项按钮或切换按钮的 Parent 属性是选项组控件的名称。选项组控件的 Parent 属性是窗体的名称。

示例
以下示例使用 Parent 属性检查“Speedy Label”标签控件、“Speedy”复选框控件和“ShipVia”选项组的父对象。如果要运行该示例,请打开“罗斯文”示例数据库中的“订单”窗体,并运行此代码。

Public Sub ShowParent()

Dim frm As Form
Dim ctl As Control

Set frm = Forms!Orders
Set ctl = frm.[Speedy Label]

' Returns name of control attached to label.
MsgBox "The parent control is " & ctl.Parent.Name
Set ctl = frm.Speedy

' Returns name of control containing control.
MsgBox "The parent control is " & ctl.Parent.Name
Set ctl = frm.ShipVia

' Returns name of form containing option group control.
MsgBox "The parent control is " & ctl.Parent.Name

End Sub


下一个示例返回的也是包含选项组控件的窗体的名称。

MsgBox Forms!Orders![Speedy Label].Parent.Parent.Parent.Name

[/Quote]
ACMAIN_CHM 2010-10-26
  • 打赏
  • 举报
回复
检查这个窗体的Parent 属性是否为空即可判断这个窗体是否有上层对象。
WWWWA 2010-10-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 zjerryj 的回复:]
想实现的需求就是禁止直接打开窗体,只能作为其他窗体的子窗体打开。请问要用什么方法?
[/Quote]
在子窗体的ACTIVATE中写代码,弹出信息,不打开窗体
ctc2000 2010-10-26
  • 打赏
  • 举报
回复
打开时检测 CurrentProject.AllForms("父窗体").IsLoaded 状态

7,712

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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