以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  如何将模式窗口,通过代码动态改变为:独立窗口。  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=90641)

--  作者:yancheng
--  发布时间:2016/9/19 8:53:00
--  如何将模式窗口,通过代码动态改变为:独立窗口。
一个模式窗口多个地方要用到,有的地方要求 :采用模式窗口,窗口关闭才能操作其它窗口。而有的地方希望把它变成独立窗口,可以同时操作多个窗口。
如何 通过代码来设计一个窗口的,当窗口1打开时采用:模式窗口;窗口2打开时采用, 独立窗口?

--  作者:jspta
--  发布时间:2016/9/19 8:56:00
--  
好像不能改模式。


--  作者:有点蓝
--  发布时间:2016/9/19 10:19:00
--  
参考,http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=65620

也只能在打开窗口前更改,窗口打开后是改不了的

--  作者:yancheng
--  发布时间:2016/9/19 12:40:00
--  

窗口:AfterLoad 的事件,写入的。


If Vars("cs") Then
e.Form.BaseForm.Visible = False
e.Form.BaseForm.Show
basemainform.AddOwnedForm(e.Form.BaseForm)
End If
用了上面的方法,能转换成独立窗口,但是:
下面的代码执行得跟我之前的不一样了?(原来执行的是:IF 第一段代码,esleif 第二段代码。可以正常判断执行;现在好像只执行是最后一个 ELSE 最后一段)代码。怎么解决这个问题?

If Forms("材料").Opened AndAlso Forms.ActiveForm.Name="材料" Then
    e.Form.Controls("插入材料图片").Visible=True
    e.Form.Controls("插入材料").Visible= False
    e.Form.Controls("编辑材料").Visible= False
    e.Form.Controls("PictureViewer1").ReadOnly= BooleanEnum.False
ElseIf Forms("导入材料").Opened AndAlso Forms.ActiveForm.Name="导入材料"  Then
    Dim dr As Row = Tables("导入材料.导入材料明细").Current
    Dim tb As WinForm.TextBox = e.Form.Controls("TextBox1")
    If dr IsNot Nothing Then
        tb.Value = dr("导入材料名称")
    End If
e.Form.Controls("插入材料图片").Visible=False
e.Form.Controls("插入材料").Visible= False
e.Form.Controls("编辑材料").Visible= True
e.Form.Controls("上移一行").Visible= True
e.Form.Controls("下移一行").Visible= True
e.Form.Controls("PictureViewer1").ReadOnly= BooleanEnum.True
Else
    e.Form.Controls("插入材料图片").Visible=False
    e.Form.Controls("插入材料").Visible= True
    e.Form.Controls("编辑材料").Visible= True
    e.Form.Controls("上移一行").Visible= False
    e.Form.Controls("下移一行").Visible= False
    e.Form.Controls("PictureViewer1").ReadOnly= BooleanEnum.True
End If

上面的问题。我把代码改成下面的了。看上去比较多,不过好像功能通达到。不知道这样写对不?请老师看一下。

If Forms("材料").Opened AndAlso Forms.ActiveForm.Name="材料" Then
    e.Form.Controls("插入材料图片").Visible=True
    e.Form.Controls("插入材料").Visible= False
    e.Form.Controls("编辑材料").Visible= False
    e.Form.Controls("上移一行").Visible= False
    e.Form.Controls("下移一行").Visible= False
    e.Form.Controls("PictureViewer1").ReadOnly= BooleanEnum.False
    If Vars("cs") Then
        e.Form.BaseForm.Visible = False
        e.Form.BaseForm.Show
        basemainform.AddOwnedForm(e.Form.BaseForm)
    End If
ElseIf Forms("导入材料").Opened AndAlso Forms.ActiveForm.Name="导入材料"  Then
    Dim dr As Row = Tables("导入材料.导入材料明细").Current
    Dim tb As WinForm.TextBox = e.Form.Controls("TextBox1")
    If dr IsNot Nothing Then
        tb.Value = dr("导入材料名称")
    End If
    e.Form.Controls("插入材料图片").Visible=False
    e.Form.Controls("插入材料").Visible= False
    e.Form.Controls("编辑材料").Visible= True
    e.Form.Controls("上移一行").Visible= True
    e.Form.Controls("下移一行").Visible= True
    e.Form.Controls("PictureViewer1").ReadOnly= BooleanEnum.True
    If Vars("cs") Then
        e.Form.BaseForm.Visible = False
        e.Form.BaseForm.Show
        basemainform.AddOwnedForm(e.Form.BaseForm)
    End If
Else
    e.Form.Controls("插入材料图片").Visible=False
    e.Form.Controls("插入材料").Visible= True
    e.Form.Controls("编辑材料").Visible= True
    e.Form.Controls("上移一行").Visible= False
    e.Form.Controls("下移一行").Visible= False
    e.Form.Controls("PictureViewer1").ReadOnly= BooleanEnum.True
    If Vars("cs") Then
        e.Form.BaseForm.Visible = False
        e.Form.BaseForm.Show
        basemainform.AddOwnedForm(e.Form.BaseForm)
    End If
End If
[此贴子已经被作者于2016/9/19 13:07:03编辑过]

--  作者:有点蓝
--  发布时间:2016/9/19 14:32:00
--  
自己测试没有问题就可以了