Foxtable(狐表)用户栏目专家坐堂 → 重新编辑的单元格自动标记红色字体


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

主题:重新编辑的单元格自动标记红色字体

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/13 17:14:00 [只看该作者]

以下是引用aza520在2018/9/13 16:11:00的发言:
老师,我现在有一个“名称”列和一个“记录”列,当“名称”列通过下拉目录树选择数据时,在“记录”列生成【通过目录树填充】,当“名称”列数据人工进行修改时,则“记录”列生成【人工修改】。请问老师该怎么写代码,写在哪个事件下

 

1、你目录树的点击事件,给表格赋值那里,写代码

 

vars("目录树") = true

 

2、datacolchanged事件,写代码

 

If e.datacol.name = "名称" Then

    If vars("目录树") = true Then

        e.datarow("记录") = "通过目录树填充"

    Else

        e.datarow("记录") = "手动填充"

    End If

    vars("目录树") = False

End If


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


加好友 发短信
等级:三尾狐 帖子:689 积分:5155 威望:0 精华:0 注册:2017/10/22 10:15:00
  发帖心情 Post By:2018/9/13 18:06:00 [只看该作者]

老师我在项目的CurrentTableChanged事件写以下代码

For Each t As Table In Tables
        If t.Name Like "*S明细杆管*" Then
            Dim tb As New DropTreeBuilder
            tb.SourceTable = DataTables("S杆管补偿标准") '指定目录树表
            tb.TreeCols = "县|类别|杆线管线类型" '指定用于生成目录树的列
            tb.SourceCols = "杆线管线类型|单位|政府补偿标准|业主补偿标准" '指定数据来源列
            tb.ReceiveCols = "杆管线类型|单位|政府补偿标准|业主补偿标准" '指定数据接收列
            tb.TreeWidth = 300 '指目录树宽度
            t.Cols("杆管线类型").DropTree = tb.Build()
        End If
    Next

老师你提供的代码vars("目录树") = true中的“目录树”是表名还是列名,对应我上面代码的哪一个

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/13 18:10:00 [只看该作者]

回复12楼,这种时候,你目录树就需要用下来窗口了

 

http://www.foxtable.com/webhelp/scr/2350.htm

 


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


加好友 发短信
等级:三尾狐 帖子:689 积分:5155 威望:0 精华:0 注册:2017/10/22 10:15:00
  发帖心情 Post By:2018/9/13 21:10:00 [只看该作者]

老师,我按照帮助文件里“自行设计下拉目录树”的一、三步骤做了一个下拉窗口,因直接在窗口中的关联表中使用,所以不设计第二步,但是生成目录窗口中的数据不能选入,请问老师,有什么问题?

设计步骤

一、设计下拉窗口

1、新建一个窗口,名为“窗口1”,窗口类型设置为“DropDownForm”。

2、窗口中插入一个TreeView(目录树)控件。

3、窗口的AfterLoad事件设置为:

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv
.BuildTree("行政区域","省市|县市")

4、将刷新目录树按钮的代码设置为:

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv
.BuildTree("行政区域","省市|县市")

5、TreeView(目录树)的NodeMouseClick事件代码设置为:

If e.Node.Level = 1 Then '如果单击的是第二层节点
    Dim tr As Row = Tables("客户").Current
    Dim dr As DataRow = e.Node.DataRow '获取生成此节点的DataRow
    tr("省市") = dr("省市")
    tr("县市") = dr("县市")
    tr("区号") = dr("区号")
    tr("邮编") = dr("邮编")
    e.Form.DropDownBox.Value = tr("县市"'这行不是多余的,省略此行,无法在表中正常使用此下拉窗口输入数据.
|
    e.Form.DropDownBox.CloseDropdown()

End
 If

二、设计录入窗口

1、新建一个窗口,名为“窗口2”,窗口类型为“独立”。

2、插入几个输入框,分别绑定到各字段,其中县市列输入框是DropDownBox,其余各列是TextBox。

2、选择县市输入框,将其下拉窗口设置为“窗口1”:

三、在项目事件AfterOpenProject加入代码:

Tables("客户").Cols("县市").DropForm = "窗口1" '客户表的县市列也采用我们设计的下拉窗口输入数据。



图片点击可在新窗口打开查看此主题相关图片如下:1111.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/13 21:20:00 [只看该作者]

NodeMouseClick事件代码,看看这里

 

http://www.foxtable.com/webhelp/scr/2893.htm

 

 


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


加好友 发短信
等级:三尾狐 帖子:689 积分:5155 威望:0 精华:0 注册:2017/10/22 10:15:00
  发帖心情 Post By:2018/9/13 21:33:00 [只看该作者]

按以下设,还是不行
TreeView(目录树)的NodeMouseClick事件代码设置为:
If e.Node.Level = 1 Then '如果单击的是第二层节点
    Dim tr As Row
    Dim dr As DataRow = e.Node.DataRow '获取生成此节点的DataRow
    If e.Form.DropTable IsNot Nothing Then '如果下拉窗口是从表中打开
        tr = e.Form.DropTable.Current '获取此表的当前行
    Else '如果下拉窗口是通过DropdownBox打开
        Dim nm As String = e.Form.DropDownBox.BindingField '获取绑定的字段
        nm = nm.Split(".")(0) '获取绑定的表名
        tr = Tables(nm).Current '获取此表的当前行
    End If
    tr("杆管线类型") = dr("杆线管线类型")
    tr("单位") = dr("单位")
    tr("政府补偿标准") = dr("政府补偿标准")
    tr("业主补偿标准") = dr("业主补偿标准")
    e.Form.DropDownBox.Value = tr("杆管线类型") '这行不是多余的,省略此行,无法在表中正常使用此下拉窗口输入数据.
    e.Form.DropDownBox.CloseDropdown()
End If

AfterOpenProject事件代码

Tables("S迁记录杆管.S迁明细杆管").Cols("杆管线类型").DropForm = "杆管补偿标准" 

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/13 21:37:00 [只看该作者]

做个一个可以测试的例子发上来测试。

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5155 威望:0 精华:0 注册:2017/10/22 10:15:00
  发帖心情 Post By:2018/9/13 22:05:00 [只看该作者]

打开AB窗口,在子表的第二列进行下拉
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.zip



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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/13 22:28:00 [只看该作者]

代码改成

 

Dim tr As Row
Dim dr As DataRow = e.Node.DataRow '获取生成此节点的DataRow
If e.Form.DropTable IsNot Nothing Then '如果下拉窗口是从表中打开
    tr = e.Form.DropTable.Current '获取此表的当前行
Else '如果下拉窗口是通过DropdownBox打开
    Dim nm As String = e.Form.DropDownBox.BindingField '获取绑定的字段
    nm = nm.Split(".")(0) '获取绑定的表名
    tr = Tables(nm).Current '获取此表的当前行
End If
tr("第二列") = dr("第一列")
tr("第三列") = dr("第二列")
tr("第四列") = dr("第三列")
e.Form.DropDownBox.Value = tr("第二列") '这行不是多余的,省略此行,无法在表中正常使用此下拉窗口输入数据.
e.Form.DropDownBox.CloseDropdown()


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


加好友 发短信
等级:三尾狐 帖子:689 积分:5155 威望:0 精华:0 注册:2017/10/22 10:15:00
  发帖心情 Post By:2018/9/13 23:25:00 [只看该作者]

老师,我参你给的以下代码,做了例子上传,想实现子表B的第二列通过目录树选择时,第五列自动填充“自动”,手动编辑第二列数据时,第五列则自动修改为“手动”。我做的例子发现不是很完善,第二列通过不断测试目录树选择或手动编辑时,第五列反应有时行,有时不行。还请老师帮看下。

1、你目录树的点击事件,给表格赋值那里,写代码

 

vars("目录树") = true

 

2、datacolchanged事件,写代码

 

If e.datacol.name = "名称" Then

    If vars("目录树") = true Then

        e.datarow("记录") = "通过目录树填充"

    Else

        e.datarow("记录") = "手动填充"

    End If

    vars("目录树") = False

End If


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



另外,我在表B的DrawCell事件写以下代码,想实现当第五列为“手动”时,第二列用“手动”格式绘制单元格(即字体标记为红色),第五列为“自动”时,则第二列用“自动”格式绘制单元格。但以下代码有错,请老师指正

If e.Col.Name = "第二列" Then 

    If e.Row.IsNull(e.Col("第二列")) = False '且该列已经输入内容

        If e.Row(e.Col.Name) = "'手动'" Then '如果该列的值小于60

            e.Style = "手动" '那么用"不及格"样式绘制单元格

        ElseIf e.Row(e.Cole.Col("第二列")) = "'自动'" Then '如果单元格的值大于95

            e.Style = "自动" '那么用"优秀"样式绘制单元格

        End If

    End If

End If


 回到顶部
总数 26 上一页 1 2 3 下一页