Previous topicNext topic
Help > 开发指南 > 窗体开发 > 窗口基础 >
独立窗口运行

我们这里讲的独立窗口运行指的是我们可以将只能依附于主窗口,在新增、双击编辑时弹出的子窗口独立于主窗口单独打开,而并不需要主窗口本身必须处于打开状态。

单独打开这些窗口有什么用呢?目前能想到的主要有以下三个用处:

1、可以使用在一些OA流程审批模块中,可以针对一些固定参数,即可打开相应的编辑窗体,方便我们直接进行审批、数据操作等动作。

2、在对一些系统选项类的数据编辑时,使用像SmSystemOption(系统选项)控件做相应的功能可能相对复杂一点,我们可以利用表属性及单表子窗口,实现下面效果的系统选项设置功能。配合子窗体的独立打开功能,就能以非常简单的方法实现系统选项类似的效果了。

3、在主窗口中比较稳定地定位相应的记录,而不会随意鼠标的切换当前记录而切换子窗口中显示的记录内容。这种显示习惯有部分人喜欢,这种特性也是一种选择。

如何实现

要想实现子窗口可以单独打开,需要做以下工作:

1、先正常设置表属性,打开并设置相应的子窗口属性。最重要的一个属性“子窗口独立打开”必须打开。注意:一般情况下我们这个属性是应该设置为False,只有我们遇到了上面几种需求时才设置为True。

2、记录一下主表的TableID属性值,一会有用。

上面的准备工作其实就已经做完了,我们只需要通过下面的代码来打开

Vb.Net
'根据TableID来打开相应的子窗体
'第二个参数是筛选条件,如果是系统选项类的功能,可能只有一条数据,所以这个条件可以为空。
'如果是一些单据的话,我们就可以根据情况来设置并筛选出唯一记录来,比如:ID='CK20230316001'
Dim frm As New FormEditSubForm("a2595a522e744cd7b54bc9d189e2b80e","",SubFormTypeEnum.SingleTableForm,CreateControlTypeEnum.RecordGrid)
'定义一个窗体名称
frm.Name="独立打开子窗口名"
'独立模式打开窗口
frm.Show()

'用并列方式打开窗口
frm.ShowType=FormShowType.InDesktopTab
frm.ShowByShowType()

C#
// 根据TableID来打开相应的子窗体
// 第二个参数是筛选条件,如果是系统选项类的功能,可能只有一条数据,所以这个条件可以为空。
// 如果是一些单据的话,我们就可以根据情况来设置并筛选出唯一记录来,比如:ID='CK20230316001'
FormEditSubForm frm = new FormEditSubForm("a2595a522e744cd7b54bc9d189e2b80e", "", SubFormTypeEnum.SingleTableForm, CreateControlTypeEnum.RecordGrid);
// 定义一个窗体名称
frm.Name = "独立打开子窗口名";
// 独立模式打开窗口
frm.Show();

// 用并列方式打开窗口
frm.ShowType = FormShowType.InDesktopTab;
frm.ShowByShowType();