以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]加载表后为什么非要重新打开一次窗口才能发挥作用?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=102868)

--  作者:新福星
--  发布时间:2017/6/27 9:48:00
--  [求助]加载表后为什么非要重新打开一次窗口才能发挥作用?
一个窗口涉及到 "角色"和"角色分配"两个表,系统打开时没有加载。

在这个窗口的AfterLoad事件中加入如下语句:

Dim zz() As String={"角色","角色分配"}
For Each x As String In zz
    If DataTables.Contains(x) = False Then \'如果表C没有加载
        DataTables.Load(x) \'加载表C
    End If
Next

这时打开的窗口时没有出错,但是角色表中的所有列没有展开,这是为什么?
再打开一次就好了!谢谢

[此贴子已经被作者于2017/6/27 9:48:18编辑过]

--  作者:有点蓝
--  发布时间:2017/6/27 10:26:00
--  
必须在窗口打开前进行加载
--  作者:有点色
--  发布时间:2017/6/27 11:16:00
--  

 方法一:打开窗口前加载;

 

 方法二:打开窗口两次,第一次打开加载表,然后重新打开一次。


--  作者:新福星
--  发布时间:2017/6/27 14:01:00
--  
方法一有效;方法二无效,第二次打开时会报错,请这个表已经加载了!
--  作者:有点色
--  发布时间:2017/6/27 15:36:00
--  
以下是引用新福星在2017/6/27 14:01:00的发言:
方法一有效;方法二无效,第二次打开时会报错,请这个表已经加载了!

 

方法二:你afterLoad事件的代码怎么写的?

 

 

[此贴子已经被作者于2017/6/27 15:37:32编辑过]

--  作者:有点色
--  发布时间:2017/6/27 15:40:00
--  

方法二:AfterLoad事件

 

If DataTables.Contains("表A") = False Then
    DataTables.Load("表A")
    e.Form.Visible = False
    e.Form.close
    e.Form.Show
    \'basemainform.AddOwnedForm(e.Form.BaseForm)
End If


--  作者:kaituozhe
--  发布时间:2017/11/26 12:04:00
--  

我是用以下代码打开窗口的,按6楼的方法修改,需要怎么修改

If e.Node.Level = 1 Then
    Dim tab As WinForm.TabControl = e.Form.Controls("TabControl1")
    If tab.TabPages(e.Node.Text) IsNot Nothing Then
        tab.SelectedPage = tab.TabPages(e.Node.Text)
    Else
        Dim Name As String = e.Node.Text
        tab.TabPages.Add(name,name)
        Dim pb = tab.BaseControl
        Forms(Name).OPEN(-1000,-1500)
        Forms(Name).BaseForm.TopLevel = False
        Forms(Name).BaseForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
        Forms(Name).BaseForm.Dock = System.Windows.Forms.DockStyle.Fill
        PB.TabPages(name).Controls.Clear
        PB.TabPages(name).Controls.add(Forms(Name).BaseForm)
        tab.SelectedPage = tab.TabPages(name)
        vars("父tab") = tab
    End If
End If


--  作者:有点甜
--  发布时间:2017/11/26 16:25:00
--  
无法在AfterLoad事件处理,必须在你打开窗口之前把表格加载出来,才行。
--  作者:kaituozhe
--  发布时间:2017/11/26 16:54:00
--  

由于每个窗口中所加载的表是不一样的,没有法写代码实现先加载后打开窗口,要想实现6楼的目的,只能先打开窗口再关闭再打开窗口了,是这样吗?


--  作者:有点甜
--  发布时间:2017/11/26 18:14:00
--  
以下是引用kaituozhe在2017/11/26 16:54:00的发言:

由于每个窗口中所加载的表是不一样的,没有法写代码实现先加载后打开窗口,要想实现6楼的目的,只能先打开窗口再关闭再打开窗口了,是这样吗?

 

你目前这个功能,只能先加载表,再打开窗口。