以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  当内部函数打开的时候如何获取值  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=86560)

--  作者:凡夫俗子
--  发布时间:2016/6/20 15:48:00
--  当内部函数打开的时候如何获取值
当内部函数窗口打开的时候如何获取值

1,如何左边的目录树选择值
2,如何获得右边的函数体的代码值


如果能通过代码获取就好了,否则只能手工操作了。

--  作者:大红袍
--  发布时间:2016/6/20 20:18:00
--  

 自食其力

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=84201&skin=0

 


--  作者:凡夫俗子
--  发布时间:2016/6/20 20:52:00
--  
谢谢
问题是;
Class183
内部函数
Button3
Button2
SplitContainer1
Button1
btnRename
btnAdd
btnDelete
btnEdit

调试只能输出一个分区控件及底部7个按钮的名称,上方的三个控件,没能输出,如何搞

--  作者:大红袍
--  发布时间:2016/6/20 21:08:00
--  
对于SplitContainer1,你再循环查看它里面的panel1、panel2里面的控件啊。
--  作者:凡夫俗子
--  发布时间:2016/6/20 21:45:00
--  
代码 求指点修改:

函数:

\'Functions.Execute("显示子控件")

Dim ctl = Args(0)
For Each c As object In ctl.Children
    output.Show(c.name)
    If Typeof c Is WinForm.SplitContainer Then
        If c.panel1.Children.Count > 0 Then Functions.Execute("显示子控件",c.panel1)
        If c.panel2.Children.Count > 0 Then Functions.Execute("显示子控件",c.panel2)
    Else
        If Typeof c Is WinForm.Panel OrElse Typeof c Is WinForm.GroupBox Then
            If c.Children.Count > 0 Then Functions.Execute("显示子控件",c)
        End If
    End If
Next

计划任务:

Dim frm = Windows.Forms.Form.ActiveForm
If frm IsNot Nothing Then
    output.show(frm.name)
    output.show(frm.text)
    For Each c As object In frm.controls
        output.show(c.name)
        If c.Children.Count > 0  Then
            Functions.Execute("显示子控件",c)
        End If
    Next
End If

但运行不正常。


---------------------------
错误
---------------------------
计划计划1代码执行出错,在对代码做出修正之前,将停止执行此计划。



错误信息:



System.MissingMemberException: 未找到类型“o_0O0o__”的公共成员“Children”。

   在 Microsoft.VisualBasic.CompilerServices.Symbols.Container.GetMembers(String& MemberName, Boolean ReportErrors)

   在 Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateGet(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack)

   在 UserCode.Timer_计划1()
---------------------------
确定   
---------------------------

[此贴子已经被作者于2016/6/20 21:46:29编辑过]

--  作者:大红袍
--  发布时间:2016/6/20 22:22:00
--  
children改成controls
--  作者:凡夫俗子
--  发布时间:2016/6/20 22:31:00
--  
谢谢,改了,不报错了,但还是没能调试出结果

请老师出手一下
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:控件遍历a.foxdb



--  作者:大红袍
--  发布时间:2016/6/20 23:59:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:控件遍历a.foxdb


--  作者:凡夫俗子
--  发布时间:2016/6/21 10:02:00
--  
谢谢老师 辛苦了晚上零点还在工作

继续求助一下
以下计划是根据 传递进来 函数名称 在 内部函数的 ListBox1控件中进行函数名称的查找定位功能。 1 后报错,请老师提点:

Dim frm = Windows.Forms.Form.ActiveForm
If frm.Text = "内部函数"  Then
    Dim zhi As String = Vars("strFindFormName")    ‘传递进来要查找的值
    Output.Show(1)
    Dim lb1 As object = frm.Controls("ListBox1")            \' Ctype(frm.controls("ListBox1"),windows.Forms.ListBox)  \'
    Output.Show(2)
    For Each s As String In lb1.Items
        Output.Show(3)
        Output.Show(s)
        If s = zhi Then
            lb1.SelectedItem = s
            Exit For
        End If
    Next
    Output.Show(4)
    MyTimers("FindWindowsB").Enabled = False
End If

--  作者:大红袍
--  发布时间:2016/6/21 10:04:00
--  
frm.Controls("SplitContainer1").Panel1.Controls("ListBox1")