Foxtable(狐表)用户栏目专家坐堂 → 文本框绑定


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

主题:文本框绑定

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7235 积分:40550 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2010/1/25 17:59:00 [显示全部帖子]

1、文本框命名为TextBox1~TextBoxN
2、窗口全局事件的Validating事件代码设置为:
  if left(e.Sender.name,7) = "TextBox"
    dim n as integer = tables("表A").position
    tables("表A").rows(n + val(e.Sender.name.Replace("TextBox",""))-1)("产品") = Forms("窗口1").Controls(e.Sender.name).text
end if

    错误已经更正!同时说错了事件名称,应为Validating事件


       注:1、此法 其它控件无需设置代码。
             2、TextBox1~TextBoxN   N为最大数无限制的整数
             3、其他不需要参与写入操作的文本框控件命名时,其最左侧不要以TextBox开始即可
         通过上述设置,输入完成,离开该文本框控件时自动写入产品列指定位置。
[此贴子已经被作者于2010-1-26 14:14:25编辑过]

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7235 积分:40550 威望:0 精华:16 注册:2008/8/31 23:23:00
付费求教在合肥的狐表大神  发帖心情 Post By:2010/1/25 18:01:00 [显示全部帖子]

 2、TextBox1~TextBoxN   N为最大数无限制的整数

也就是该类文本框无上数限制,允许这样为N行操作而无需修改代码,只需要按照顺序规则添加文本框即可,相对灵活。

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7235 积分:40550 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2010/1/25 19:34:00 [显示全部帖子]

以下是引用mr725在2010-1-25 18:22:00的发言:
还是程版的代码强啊~   学习了! 



       呵呵,算不上强,长时间工作忙,不怎么来论坛,手痒痒,随便练练,见笑了!


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


加好友 发短信 一级勋章
等级:超级版主 帖子:7235 积分:40550 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2010/1/26 12:29:00 [显示全部帖子]

哦,是我疏忽了,
将:
tables("表A").rows(n + val(e.Sender.name.Replace("TextBox",""))-1)("产品") = Forms("窗口1").Controls(e.Sender).text

这一行改成这样:
tables("表A").rows(n + val(e.Sender.name.Replace("TextBox",""))-1)("产品") = Forms("窗口1").Controls(e.Sender.name).text

更简单一点是这样:

tables("表A").rows(n + val(e.Sender.name.Replace("TextBox",""))-1)("产品") = e.Sender.text

全部代码也可以这样:
if left(e.Sender.name,7) = "TextBox"
    dim n as integer = tables("表A").position
    dim xh as String = e.Sender.name.Replace("TextBox","")
    n = n + val(xh)-1
    tables("表A").rows(n)("产品") = e.Sender.text
end if



昨天没有测试,随手放上来了,现已更正,示例文件在楼下!

[此贴子已经被作者于2010-1-26 12:44:24编辑过]

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7235 积分:40550 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2010/1/26 12:31:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar


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


加好友 发短信 一级勋章
等级:超级版主 帖子:7235 积分:40550 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2010/1/26 14:12:00 [显示全部帖子]


Validating事件代码改为:

if left(e.Sender.name,7) = "TextBox"
    dim n as integer = tables("表A").position
    dim xh as String = e.Sender.name.Replace("TextBox","")
    if n + val(e.Sender.name.Replace("TextBox",""))> 0 and n + val(e.Sender.name.Replace("TextBox",""))< DataTables("表A").DataRows.Count +1
        tables("表A").rows(n + val(e.Sender.name.Replace("TextBox",""))-1)("第一列") = e.Sender.text
    else
        MessageBox.show("超出主表范围")
    end if
end if


不判断超出主表行数范围出错!

全局事件的Enter事件加入以下代码:

if left(e.Sender.name,7) = "TextBox"
    dim n as integer = tables("表A").position
    dim xh as String = e.Sender.name.Replace("TextBox","")
    if n + val(e.Sender.name.Replace("TextBox",""))> 0 and n + val(e.Sender.name.Replace("TextBox",""))< DataTables("表A").DataRows.Count +1
        e.Sender.Value = tables("表A").rows(n + val(e.Sender.name.Replace("TextBox",""))-1)("第一列")
    else
        MessageBox.show("超出主表范围")
    end if
end if


表属性的PositionChanged事件增加如下代码:

Forms("窗口1").open()
dim n as integer = tables("表A").position
for i as Integer = 1 to 5
    if  n + i -1< DataTables("表A").DataRows.Count and n + i-1 > -1
        Forms("窗口1").Controls("TextBox" & i).Value = tables("表A").rows(n +i-1)("第一列")
    else
        Forms("窗口1").Controls("TextBox" & i).Value = nothing
    end if
next



 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar


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


加好友 发短信 一级勋章
等级:超级版主 帖子:7235 积分:40550 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2010/1/26 14:16:00 [显示全部帖子]

for i as Integer = 1 to 5  这里的5为您的文本框名称的最大编号,上述代码组合增减文本框仅需修改此处。

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7235 积分:40550 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2010/1/26 15:18:00 [显示全部帖子]

以下是引用blackzhu在2010-1-26 14:45:00的发言:
               ok,完美.本来我按照你的代码修改的差不多了,就是表事件没有做到,窗口的基本和你一样,当然是跟着你的修改的.如果狐爸能做到直接可以选项就漂亮了.



        哈哈,大家的需求各有不同,啥都要他来完成有些牵强,能自己实现的还是可以自己实现,原则上,作为设计角度看,只要能实现,就尽量自己实现,这样灵活度才高,越是想设计过程简单一点,就可能会导致灵活度大大降低,因为都被贺老师的框框框死了,对与设计者,会越被束缚越紧(个人意见)。


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


加好友 发短信 一级勋章
等级:超级版主 帖子:7235 积分:40550 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2010/1/26 19:26:00 [显示全部帖子]

呵呵,不能同步?楼主怎么没说?郁闷!

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7235 积分:40550 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2010/1/26 19:31:00 [显示全部帖子]

您选择不同的行试试,我这里是同步的!

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