Foxtable(狐表)用户栏目专家坐堂 → NumericComboBox控件用法


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

主题:NumericComboBox控件用法

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


加好友 发短信
等级:狐精 帖子:3144 积分:20951 威望:0 精华:0 注册:2016/3/28 16:57:00
NumericComboBox控件用法  发帖心情 Post By:2021/12/10 13:53:00 [显示全部帖子]

请教一下老师,我单独做一个增加按钮,代码如下:

    Dim i As Integer = e.Form.Controls("增加行数").value
    If i < 1 Then
        MessageBox.Show("新增行数不能为0且不能小于0,请输入新增行数!","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)
        e.Cancel = True
        Return
    Else
        Tables(e.Form.Name & "_table1").AddNew(i)

    End If

我想在向在微调里面,点击上下,+1-1的情况,+1自动增加一行,-1自动减少一行怎么实现呢?


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


加好友 发短信
等级:狐精 帖子:3144 积分:20951 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2021/12/10 14:07:00 [显示全部帖子]

目前的办法是:先清空表,DataTables("通用进项piao录入表").DeleteFor(""),不知道还有没其他办法

[此贴子已经被作者于2021/12/10 14:07:36编辑过]

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


加好友 发短信
等级:狐精 帖子:3144 积分:20951 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2021/12/10 15:11:00 [显示全部帖子]

Dim i As Integer = e.sender.value
If i < 0 Then
    i = 0
    e.Cancel = True
    Return
End If

老师这样写,防止小于0 ,怎么会没效果呢

 

[此贴子已经被作者于2021/12/10 15:11:57编辑过]

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


加好友 发短信
等级:狐精 帖子:3144 积分:20951 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2021/12/10 16:24:00 [显示全部帖子]

请老师看看,这个逻辑还是没对,直接输入行数时,出来的行数不对,用微调增加行数时,从0增加到1,没增加成功,在增加到2时,一次增加了2行,后面类增加出来都是错的

If e.sender.value < 0 Then
    e.sender.value = 0
End If
Dim xm As WinForm.ComboBox = e.Form.Controls("项目名称")
If xm.Value = "" Then
    MessageBox.Show("请选择需要录入数据的项目名称!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
End If

If vars("行数") > e.sender.value Then
    Dim cnt1 As Integer = vars("行数") - e.sender.value   '倒序删除指定的行数
ElseIf vars("行数") < e.sender.value Then
    Dim cnt2 As Integer = e.sender.value - vars("行数")
    Tables(e.Form.Name & "_table1").AddNew(cnt2)
    Dim r As Row = Tables(e.Form.Name & "_table1").AddNew(cnt2)
    r("项目名称") = e.Form.Controls("项目名称").value
End If
vars("行数")  = e.sender.value


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


加好友 发短信
等级:狐精 帖子:3144 积分:20951 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2021/12/10 16:48:00 [显示全部帖子]

这逻辑还是不对,如果先输入了行数,在修改,前面的有执行了一遍

If e.sender.value < 0 Then
    e.sender.value = 0
End If
Dim xm As WinForm.ComboBox = e.Form.Controls("项目名称")
If xm.Value = "" Then
    MessageBox.Show("请选择需要录入数据的项目名称!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
End If

Dim i As Integer = e.sender.value
If i > 0 Then
    Tables(e.Form.Name & "_table1").AddNew(i)
    vars("行数") = i
    For Each r As Row In Tables(e.Form.Name & "_table1").Rows
        r("项目名称") = e.Form.Controls("项目名称").value
    Next
    e.Form.Controls("批量录入").Enabled = True
End If

If vars("行数") > e.sender.value Then
    Dim cnt1 As Integer = vars("行数") - e.sender.value   '倒序删除指定的行数
ElseIf vars("行数") < e.sender.value Then
    Dim cnt2 As Integer = e.sender.value - vars("行数")
    Dim r As Row = Tables(e.Form.Name & "_table1").AddNew(cnt2)
    r("项目名称") = e.Form.Controls("项目名称").value
End If
vars("行数")  = e.sender.value
e.Form.Controls("批量录入").Enabled = True


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


加好友 发短信
等级:狐精 帖子:3144 积分:20951 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2021/12/10 17:02:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20211210170035.jpg
图片点击可在新窗口打开查看
e.sender.value默认是0

当我输入一个值后,比如5增加5行,用微调,增加1时,在已有行数基础上增加一行,减少1时在以后行数的基础上减少1行,或是我重新输入一个值,10,清空所有的行,总的就增加10行

这个窗口表是,打开窗口创建的一个临时表

Dim t As Table = Tables(e.Form.Name & "_table1")
Dim dtb As New DataTableBuilder("通用进项piao录入表")
dtb.AddDef("项目名称", Gettype(String), 250)
dtb.AddDef("商品名称", Gettype(String), 100)
dtb.AddDef("供货方名称", Gettype(String), 50)
dtb.AddDef("fa piao类别", Gettype(String), 10)
dtb.AddDef("工料机类别", Gettype(String), 10)
dtb.AddDef("开piao日期", Gettype(Date))
dtb.AddDef("fa piao号码", Gettype(String), 10)
dtb.AddDef("税价合计金额", Gettype(Double))
dtb.AddDef("税率", Gettype(Double))
dtb.AddDef("税额", Gettype(Double))
'dtb.AddDef("税后金额", Gettype(Double))
dtb.AddDef("寄达日期", Gettype(Date))
dtb.Build()
t.DataSource = DataTables("通用进项piao录入表")

[此贴子已经被作者于2021/12/10 17:07:42编辑过]

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


加好友 发短信
等级:狐精 帖子:3144 积分:20951 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2021/12/10 17:19:00 [显示全部帖子]

With DataTables("通用进项piao录入表")
    .StopRedraw     '暂停绘制
    .DeleteFor("")  '清空表
    Dim i As Integer = e.sender.value
    If i > 0 Then
        Tables(e.Form.Name & "_table1").AddNew(i)
        For Each r As Row In Tables(e.Form.Name & "_table1").Rows
            r("项目名称") = e.Form.Controls("项目名称").value
        Next
        e.Form.Controls("批量录入").Enabled = True
        vars("行数") = i
    Else
        e.Form.Controls("批量录入").Enabled = False
    End If
    .ResumeRedraw  '恢复绘制
End With

这样改直接输入,串钩表有点闪能解决不?

 


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


加好友 发短信
等级:狐精 帖子:3144 积分:20951 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2021/12/10 18:59:00 [显示全部帖子]

不知道把  .DeleteFor("")  '清空表改为 .RejectChanges()会不会好点
做的时候在内部表做的,一点问题没有,在把他做到系统就闪得厉害

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


加好友 发短信
等级:狐精 帖子:3144 积分:20951 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2021/12/13 9:55:00 [显示全部帖子]

这样就不闪了

Dim xm As WinForm.ComboBox = e.Form.Controls("项目名称")
If xm.Value = "" Then
    MessageBox.Show("请选择需要录入数据的项目名称!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
End If
Dim i As Integer = e.sender.value
If i < 0 Then
    i = 0
    MessageBox.Show("增加行数不能小于等于0!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
End If
Systemready = False
DataTables("通用进项piao录入表").StopRedraw       '暂停绘制
DataTables("通用进项piao录入表").RejectChanges()  '恢复表
'DataTables("通用进项piao录入表").DeleteFor("")   '清空表
If i > 0 Then
    Tables(e.Form.Name & "_table1").AddNew(i)
    For Each r As Row In Tables(e.Form.Name & "_table1").Rows
        r("项目名称") = e.Form.Controls("项目名称").value
    Next
    e.Form.Controls("批量录入").Enabled = True
    vars("行数") = i
Else
    e.Form.Controls("批量录入").Enabled = False
End If
DataTables("通用进项piao录入表").ResumeRedraw  '恢复绘制
Systemready = True


 回到顶部