以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  NumericComboBox控件用法  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=173656)

--  作者:cd_tdh
--  发布时间:2021/12/10 13:53:00
--  NumericComboBox控件用法

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

    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
--  发布时间:2021/12/10 14:07:00
--  

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

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

--  作者:有点蓝
--  发布时间:2021/12/10 14:44:00
--  
ValueChanged事件

if vars("count") > e.sender.value then
dim 减少的行数 as integer = vars("count") - e.sender.value
倒序删除指定的行数
elseif vars("count") < e.sender.value then
dim 增加的行数 as integer = e.sender.value - vars("count") 
Tables(e.Form.Name & "_table1").AddNew(增加的行数)
endif
vars("count")  = e.sender.value 

--  作者:cd_tdh
--  发布时间: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编辑过]

--  作者:有点蓝
--  发布时间:2021/12/10 15:19:00
--  
代码放在什么事件的?放到valuechanged事件

If e.sender.value < 0 Then
    e.sender.value = 0
End If

--  作者:cd_tdh
--  发布时间: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


--  作者:有点蓝
--  发布时间:2021/12/10 16:38:00
--  
AddNew了2次,肯定是增加2行呀
--  作者:cd_tdh
--  发布时间: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


--  作者:有点蓝
--  发布时间:2021/12/10 16:59:00
--  
请上传实例测试,说明要什么效果
--  作者:cd_tdh
--  发布时间: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("通用进项票录入表")
dtb.AddDef("项目名称", Gettype(String), 250)
dtb.AddDef("商品名称", Gettype(String), 100)
dtb.AddDef("供货方名称", Gettype(String), 50)
dtb.AddDef("发票类别", Gettype(String), 10)
dtb.AddDef("工料机类别", Gettype(String), 10)
dtb.AddDef("开票日期", Gettype(Date))
dtb.AddDef("发票号码", 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("通用进项票录入表")

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