以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- TabControl的用法请教 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=177300) |
||||
-- 作者:wukangppbb -- 发布时间:2022/5/16 23:50:00 -- TabControl的用法请教 TabControl以下用法错误,应该怎么修改的? Dim tb As WinForm.TabControl = e.Form.Controls("TabControl1") Dim r As Row = Tables("评价程序表").AddNew() Dim cnt As Integer = DataTables("评价程序表").DataRows.Count \'记录打开窗口前的行数 Forms("评价信息窗口").Open() If DataTables("评价程序表").DataRows.Count = cnt \'如果新增行已经保存 Dim vr As WinForm.TabControl = tb.Rows.Add() For Each cl As WinForm.TabControlColumn In tb.Columns \'逐列取值 vr(cl.Name) = r(cl.Name) Next vr.Tag = r.DataRow End If |
||||
-- 作者:有点蓝 -- 发布时间:2022/5/17 8:45:00 -- TabControl和表格有什么关系?这个代码想做什么? |
||||
-- 作者:wukangppbb -- 发布时间:2022/5/17 16:26:00 -- 回复:(有点蓝)TabControl和表格有什么关系?这个代... 我是想达到这样一个效果 打开示例十七窗口,假设鼠标位置在第一行,点击“增加培训”记录的时候,打开培训记录的窗口,培训记录的窗口中的“编号”,“部门”,“姓名”按照示例十七窗口所在行自动填充,培训记录按照示例十七窗口的员工编号自动增加一个培训记录编号,比如“1-001” 再次点击“增加培训”记录的时候,培训记录编号变成“1-002”. 这个在帮助文件里面应该参照哪一个? |
||||
-- 作者:有点蓝 -- 发布时间:2022/5/17 16:46:00 --
|
||||
-- 作者:wukangppbb -- 发布时间:2022/5/17 18:52:00 -- 回复:(有点蓝)[upload=zip,listview示例0517.zip]v... 谢谢老师 但是我设置的这个“培训记录编号”自动编号,无法自动编号,麻烦帮忙看看。 Select e.DataCol.Name Case "编号" If e.DataRow.IsNull("编号") Then e.DataRow("培训记录编号") = Nothing Else Dim bh As String = e.DataRow("编号") If e.DataRow("培训记录编号").StartsWith(bh) = False \'如果单据编号前缀不符 Dim max As String Dim idx As Integer max = e.DataTable.Compute("Max(培训记录编号)","编号 = \'" & bh & "\' And [编号] <> " & e.DataRow("编号")) \'取得该类别的最大编号 If max > "" Then \'如果存在最大编号 idx = CInt(max.Substring(1,3)) + 1 \'获得最大编号的后三位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("培训记录编号") = bh & Format(idx,"000") End If End If End Select |
||||
-- 作者:有点蓝 -- 发布时间:2022/5/17 20:21:00 -- 建议加一个下划线 Select e.DataCol.Name Case "编号" If e.DataRow.IsNull("编号") Then e.DataRow("培训记录编号") = Nothing Else Dim bh As String = e.DataRow("编号") If e.DataRow("培训记录编号").StartsWith(bh & “_”) = False \'如果单据编号前缀不符 Dim max As String Dim idx As Integer max = e.DataTable.Compute("Max(培训记录编号)","编号 = \'" & bh & "\' And [_identify] <> " & e.DataRow("_identify")) \'取得该类别的最大编号 If max > "" Then \'如果存在最大编号 idx = CInt(max.Substring(max.length - 3)) + 1 \'获得最大编号的后三位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("培训记录编号") = bh & "_" & Format(idx,"000") End If End If End Select |
||||
-- 作者:wukangppbb -- 发布时间:2022/5/17 22:18:00 -- 回复:(有点蓝)建议加一个下划线Select e.DataCol.N... 有个报错 .NET Framework 版本:4.0.30319.42000 Foxtable 版本:2022.1.30.2 错误所在事件:表,培训记录,DataColChanged 详细错误信息: 调用的目标发生了异常。 StartIndex 不能小于 0。 参数名: startIndex |
||||
-- 作者:有点蓝 -- 发布时间:2022/5/17 22:24:00 -- 调试 Select e.DataCol.Name Case "编号" If e.DataRow.IsNull("编号") Then e.DataRow("培训记录编号") = Nothing Else Dim bh As String = e.DataRow("编号") msgbox("bh=" & bh) If e.DataRow("培训记录编号").StartsWith(bh & “_”) = False \'如果单据编号前缀不符 Dim max As String Dim idx As Integer max = e.DataTable.Compute("Max(培训记录编号)","编号 = \'" & bh & "\' And [_identify] <> " & e.DataRow("_identify")) \'取得该类别的最大编号 msgbox("max =" & max ) If max > "" Then \'如果存在最大编号 msgbox("Substring=" & max.Substring(max.length - 3)) idx = CInt(max.Substring(max.length - 3)) + 1 \'获得最大编号的后三位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If msgbox("idx =" & idx ) e.DataRow("培训记录编号") = bh & "_" & Format(idx,"000") End If End If End Select |
||||
-- 作者:wukangppbb -- 发布时间:2022/5/18 23:43:00 -- 回复:(有点蓝)调试Select e.DataCol.Name &n... 老师 AfterLoad 里面可以写两个 listview的 加载代码吗? 我写的下面这个有报错:列“任务编号”不属于表 评价程序表。 Dim lvw As WinForm.ListView = e.Form.Controls("ListView1") lvw.Columns.Clear() \'清除原来的列 lvw.Rows.Clear() \'清除原来的行 lvw.Images.Clear() \'清除原来的图片 lvw.GridLines = True \'显示网格线 lvw.MultiSelect = False \'禁止按Ctrl多选 \'lvw.CheckBoxes = True \'显示复选框 lvw.View = ViewMode.Details \'显示模式为详细信息 Dim cls() As String = {"任务编号","任务名称","评价年度","评价单位"} \'指定要显示的各列 Dim wds() As Integer = {"100","100","100","200"} \'定义列宽 For i As Integer = 0 To cls.Length - 1 Dim c As WinForm.ListViewColumn = lvw.Columns.Add() c.Name = cls(i) \'指定列名 c.Text = cls(i)\'指定列标题 c.Width = wds(i) \'指定列宽 Next For Each dr As DataRow In DataTables("内部控制评价任务清单").DataRows \'从数据表中提取数据 Dim r As WinForm.ListViewRow = lvw.Rows.Add() \'增加一行 For Each cl As String In cls \'逐列取值 r(cl) = dr(cl) Next Next lvw.ResumeRedraw() \'恢复绘制 Dim lvw2 As WinForm.ListView = e.Form.Controls("ListView2") lvw2.Columns.Clear() \'清除原来的列 lvw2.Rows.Clear() \'清除原来的行 lvw2.Images.Clear() \'清除原来的图片 lvw2.GridLines = True \'显示网格线 lvw2.MultiSelect = False \'禁止按Ctrl多选 \'lvw.CheckBoxes = True \'显示复选框 lvw2.View = ViewMode.Details \'显示模式为详细信息 Dim cls2() As String = {"评价任务编号","模块涉及的流程","主责部门","测试人"} \'指定要显示的各列 Dim wds2() As Integer = {"100","100","100","200"} \'定义列宽 For i2 As Integer = 0 To cls2.Length - 1 Dim c2 As WinForm.ListViewColumn = lvw2.Columns.Add() c2.Name = cls2(i2) \'指定列名 c2.Text = cls2(i2)\'指定列标题 c2.Width = wds2(i2) \'指定列宽 Next For Each dr2 As DataRow In DataTables("评价程序表").DataRows \'从数据表中提取数据 Dim r2 As WinForm.ListViewRow = lvw2.Rows.Add() \'增加一行 For Each cl2 As String In cls \'逐列取值 r2(cl2) = dr2(cl2) Next Next lvw.ResumeRedraw() \'恢复绘制 |
||||
-- 作者:有点蓝 -- 发布时间:2022/5/19 8:56:00 -- 提示很明显了 For Each dr2 As DataRow In DataTables("评价程序表").DataRows \'从数据表中提取数据 Dim r2 As WinForm.ListViewRow = lvw2.Rows.Add() \'增加一行 For Each cl2 As String In cls2 \'逐列取值 r2(cl2) = dr2(cl2) Next Next |