Foxtable(狐表)用户栏目专家坐堂 → [求助]属性窗口的全局代码


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

主题:[求助]属性窗口的全局代码

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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
[求助]属性窗口的全局代码  发帖心情 Post By:2017/12/21 14:34:00 [显示全部帖子]

老师,
   原来您给的例子,是属性在列取得;
属性太多,列放不下,
希望窗口中设定属性能相应的更表同时跟改设置,全局变量代码怎么改成根据行取得和赋值呢,烦您在给弄下(暂时忽略某些属性不能取值的错误)。


[此贴子已经被作者于2017/12/21 15:43:45编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/12/21 15:21:00 [显示全部帖子]

楼上代码是我写 我 指的是全局代码怎么改 点击窗口 CHECK1  控件  在PANL1设定属性 后更改表 控件大小中的属性数据 ;同时 PANL1设定属性从表 控件大小 的属性数据反写控件的属性

也就是 下面标注颜色部分 能变成根据行取值 (原来是列)

'实体对象和DataRow的互相赋值
'根据相同名称的属性和列名进行操作
Public Class ConvertHelper

'把DataRow值赋值到对象的实体对象
Public Shared Sub FromDataRow(ByVal dr As DataRow, ByRef entity As WeChat.EntityBase)
Dim fs As System.Reflection.PropertyInfo() = entity.Gettype.GetProperties
Dim f As System.Reflection.PropertyInfo
For Each f In fs
    If ((Not dr.DataTable Is Nothing) AndAlso dr.DataTable.DataCols.Contains(f.Name)) Then
        Dim o As Object = dr(f.Name)
        If (Not o Is DBNull.Value) Then
            f.SetValue(entity, o, Nothing)
        End If
    End If
Next
End Sub

' 把实体值赋值到DataRow
Public Shared Sub ToDataRow(ByVal entity As WeChat.EntityBase, ByRef dr As DataRow)
Dim fs As System.Reflection.PropertyInfo() = entity.Gettype.GetProperties
Dim f As System.Reflection.PropertyInfo
For Each f In fs
    If ((Not dr.DataTable Is Nothing) AndAlso dr.DataTable.DataCols.Contains(f.Name)) Then
        Dim o As Object = f.GetValue(entity, Nothing)
        If (o Is Nothing) Then
            dr(f.Name) = DBNull.Value
        Else
            dr(f.Name) = o
        End If
    End If
Next
End Sub

End class

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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/12/21 15:35:00 [显示全部帖子]

老师,
  2楼代码没问题,我要说的是 通过窗口1的 系统属性设置窗口去写表数据,全局代码没这么写过,怎么照抄啊?

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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/12/21 15:44:00 [显示全部帖子]

是这个,忽略1楼的例子
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件: 控件位置大小.foxdb

[此贴子已经被作者于2017/12/21 16:19:34编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/12/21 15:50:00 [显示全部帖子]

老师,
  楼上的例子绑定的部分不会啊6楼就是想要的,就是全局代码不会写,望您给在看看6楼的例子。

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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/12/21 15:57:00 [显示全部帖子]

这块怎么写呢

'实体对象和DataRow的互相赋值
'根据相同名称的属性和列名进行操作
Public Class ConvertHelper

'把DataRow值赋值到对象的实体对象
Public Shared Sub FromDataRow(ByVal dr As DataRow, ByRef entity As WeChat.EntityBase)
Dim fs As System.Reflection.PropertyInfo() = entity.Gettype.GetProperties
Dim f As System.Reflection.PropertyInfo
For Each f In fs
    If ((Not dr.DataTable Is Nothing) AndAlso dr.DataTable.DataRows.find("控件名称="'& f.Name &"' and 属性='"& ???? &") Then
        Dim o As Object = dr(f.Name)
        If (Not o Is DBNull.Value) Then
            f.SetValue(entity, o, Nothing)
        End If
    End If
Next
End Sub

' 把实体值赋值到DataRow
Public Shared Sub ToDataRow(ByVal entity As WeChat.EntityBase, ByRef dr As DataRow)
Dim fs As System.Reflection.PropertyInfo() = entity.Gettype.GetProperties
Dim f As System.Reflection.PropertyInfo
For Each f In fs
    If ((Not dr.DataTable Is Nothing) AndAlso dr.DataTable.DataRows.find("控件名称="'& f.Name &"' and 属性='"& ???? &") Then
        Dim o As Object = f.GetValue(entity, Nothing)
        If (o Is Nothing) Then
            dr(f.Name) = DBNull.Value
        Else
            dr(f.Name) = o
        End If
    End If
Next
End Sub

End class

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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/12/21 16:06:00 [显示全部帖子]

用9楼的代码改下不行吗,10楼的方法太难了,能力有限不会弄啊。图片点击可在新窗口打开查看

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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/12/21 16:56:00 [显示全部帖子]

没反应烦您在给看看

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:复件 控件位置大小.foxdb



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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/12/21 16:59:00 [显示全部帖子]

写值进去不知道 是不是不对,好像没有触发全局事件
Public Class ConvertHelper

'把DataRow值赋值到对象的实体对象
Public Shared Sub FromDataRow(ByVal dt1 As DataTable, ByVal entity As object)
Dim fs As System.Reflection.PropertyInfo() = entity.Gettype.GetProperties
Dim f As System.Reflection.PropertyInfo
For Each f In fs
    Dim dr1 As DataRow = dt1.find("控件名称='" & entity.name & "' And 属性='" & f.name & "'")
MessageBox.Show("控件名称='" & entity.name & "' And 属性='" & f.name & "'")
    If dr1 Is Nothing Then
        Dim o As Object = dr1("控件名称")
        If (Not o Is DBNull.Value) Then
            f.SetValue(entity, o, Nothing)



        End If
End If
    Next
End Sub
'
' 把实体值赋值到DataRow
Public Shared Sub ToDataRow(ByVal entity As object, dt As DataTable)
Dim fs As System.Reflection.PropertyInfo() = entity.Gettype.GetProperties
Dim f As System.Reflection.PropertyInfo
For Each f In fs
    Dim dr As DataRow = dt.find("控件名称='" & entity.name & "' And 属性='" & f.name & "'")''''''1
    If dr Is Nothing Then
        dr = dt.addnew
        dr("控件名称") = entity.name
        dr("属性") = f.name
    End If
    
    Dim o As Object = f.GetValue(entity, Nothing)
    If (o Is Nothing) Then
        dr("系统属性值") = DBNull.Value
    Else
        dr("系统属性值") = o
    End If
Next
End Sub
End class

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


加好友 发短信
等级:九尾狐 帖子:2927 积分:20167 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/12/21 17:24:00 [显示全部帖子]

老师,
  希望利用这个窗口 即时的看到 调整窗口中控件的结果  可是 感觉 好像离目标越走越远了呢
例如 利用属性panl 调整chek1 控件的大小 就会将属性值登录在表“控件大小”,同时反写了属性。

不知道是不是 偏差了 我没说明白 还是怎么的.


[此贴子已经被作者于2017/12/21 17:24:41编辑过]

 回到顶部
总数 18 1 2 下一页