Foxtable(狐表)用户栏目专家坐堂 → [求助]获取属性和控件类型


  共有2272人关注过本帖树形打印复制链接

主题:[求助]获取属性和控件类型

帅哥哟,离线,有人找我吗?
blsu33
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2927 积分:20161 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/6/28 16:09:00 [只看该作者]

不是 表格可以吗,例如一个BUTTOn 控件

Dim Code As String
Code = Code & "Dim drs As List(Of DataRow)=DataTables(""表B"").Select(""控件名称='button1'"") " & vbcrlf
Code = Code & "Dim dr2 As DataRow=DataTables(""表B"").DataRow(0)" & vbcrlf
Code = Code & "Dim TJKJ As WinForm." & "dr2(""控件类型"")=E.Form.CreateControl(dr2(""控件名称""),ControlTypeEnum." & dr2(""控件类型""))" & vbcrlf
Code = Code & "For Each dr As DataRow In DRS" & vbcrlf
Code = Code & "TJKJ & dr(""控件类型"") "& "".""  & dr(""属性"")=dr(""属性值"")" & vbcrlf
Code = Code & "Next" & vbcrlf
Code = Code & "e.Form.AddControl(TJKJ)" & vbcrlf
Functions.Add("thkj",Code)
Functions.Complie()


 回到顶部
帅哥哟,离线,有人找我吗?
blsu33
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2927 积分:20161 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/6/28 16:11:00 [只看该作者]

老师,
  动态生成也是需要写上去的,这些属性不是我需要全部写上去的吗(默认属性忽略)。

 楼上的代码,单纯是修改正确应该怎么写,动态管理函数写不好,请老师给指导下。
[此贴子已经被作者于2017/6/28 16:28:50编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/28 16:34:00 [只看该作者]

不是这个意思。你存放的属性值,是字符,是无法还原成对象的。

 

比如,Font属性,存放的是 宋体,9号;Image属性,存放的可能就是一串乱码。无法直接还原为对象赋值的。


 回到顶部
帅哥哟,离线,有人找我吗?
blsu33
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2927 积分:20161 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/6/28 16:36:00 [只看该作者]

老师,
  多谢了。
  动态管理函数写不好,11楼代码应该怎么写,劳烦老师给指导下,在学习下动态管理函数写法
[此贴子已经被作者于2017/6/28 16:41:40编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106809 积分:543246 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/6/28 17:46:00 [只看该作者]

11楼没有问题呀,最后调用就可以了

Functions.Execute("thkj")

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/28 17:50:00 [只看该作者]

参考代码

 

Dim lx As String = "TextBox"
Dim name As String = "test"
Dim sxm1 As String = "text"
Dim sxz1 As String = "abcdefg"
Dim code As String = ""
code &= "dim frm = args(0)" & vbcrlf
code &= "dim txt = frm.CreateControl(""" & name & """, ControlTypeEnum." & lx & ")" & vbcrlf
code &= "txt." & sxm1 & " = """ & sxz1 & """" & vbcrlf
code &= "frm.AddControl(txt)"

msgbox(code)

Functions.remove("test")
Functions.Add("test",Code)
Functions.Complie()
Functions.Execute("test", e.form)


 回到顶部
帅哥哟,离线,有人找我吗?
blsu33
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2927 积分:20161 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/6/29 10:07:00 [只看该作者]

老师,
Dim dr1 As DataRow=DataTables("表B").DataRows(0)
Dim lx As String = dr1("控件类型")
Dim sxz1 As String = dr1("控件名称")
Dim name As String = "test"
Dim sxm1 As String = "text"
Dim code As String = ""
code &= "dim frm = args(0)" & vbcrlf
code &= "dim txt = frm.CreateControl(""" & name & """, ControlTypeEnum." & lx & ")" & vbcrlf
code &= "For Each dr As DataRow In DataTables(""表B"").DataRows" & vbcrlf
code &= """txt."" & dr(""属性"") & ""="" & dr(""属性值"")" & vbcrlf'这句总是不对,怎么写呢!
code &= "next" & vbcrlf
code &= "frm.AddControl(txt)"
msgbox(code)
Functions.remove("test")
Functions.Add("test",Code)
Functions.Complie()
Functions.Execute("test", e.form)




 回到顶部
帅哥哟,离线,有人找我吗?
blsu33
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2927 积分:20161 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/6/29 10:11:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:一层自动生成成控件.foxdb


窗口2 的afterload 代码

 回到顶部
帅哥哟,离线,有人找我吗?
blsu33
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2927 积分:20161 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/6/29 11:16:00 [只看该作者]

顶顶

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/29 11:35:00 [只看该作者]

正常代码这样写,但是,依然不能还原的啊。比如 TextAlign 属性,你不能设置成字符,还有 backColor 之类的的,全部都需要特殊处理。

 

Dim dr1 As DataRow=DataTables("表B").DataRows(0)
Dim lx As String = dr1("控件类型")
Dim name As String = dr1("控件名称")

Dim code As String = ""
code &= "dim frm = args(0)" & vbcrlf
code &= "dim txt = frm.CreateControl(""" & name & """, ControlTypeEnum." & lx & ")" & vbcrlf
For Each dr As DataRow In DataTables("表B").DataRows
    code &= "txt." & dr("属性") & "=""" & dr("属性值") & """" & vbcrlf
Next

code &= "frm.AddControl(txt)"
msgbox(code)


 回到顶部
总数 20 上一页 1 2