li_ColumnCount = dw_1ObjectDataWindowColumnCount
这个得到的不是行数,数据窗口的行数是rowcount()函数得到的。
这个得到的是数据窗口的总列数,就是你的数据窗口一共有多少个字段。
一般是先得到这个列数,然后使用一个for循环,逐个使用describe函数得到每个列的名字,类型等等的来用。
dw_1是控件,就是你在窗口上增加的数据窗口控件
dw_1object:Used for the direct manipulation of objects within a DataWindow object from a script These objects could be, for example, columns or text objects
这个是PB里面对于这个的定义,表示数据窗口里面的对象。
dw_1objectdatawindow,指的是对象是数据窗口
dw_1objectdatawindowcolumn指数据窗口中的字段
dw_1objectdatawindowcolumncount指数据窗口字段的数目
这么逐层看下去就好了。
dw_1accepttext()
long ll_count
ll_count = dw_1rowCount()//rowCount()函数返回dw_1行数,返回参数为数值型
sle_1text = string(ll_count)//数值型转换为字符串型,此时sle_1的文本显示的就是行数
第二个问题没有看懂?
1、打开需要 *** 作的EXCEL表格,点击工具栏的“视图”。
2、选择“分页预览”。
3、发现分页间有一条虚线,点击虚线即可自由控制调整设定分页固定打印行数。行数是指“横向”行列数目的意思。
首先确定,代码肯定是要写在数据窗口的单击事件中。即clicked事件中,这样才会单击数据窗口时触发。
得到这一行的相应的数据,需要逐个的获取,先根据要得到的数据定义变量,变量的类型要与数据一致。
比如这一行有emp_id, emp_name, salary, dept_id四个字段,分别对应的类型是:字符型,字符型,带两位小数的数字,字符型。
那么在单击事件中:
if row <= 0 then return //如果点击的时候,没有得到行,返回,不执行。
string ls_empid, ls_empname, ls_deptid
dec ld_salary
ls_empid = thisGetItemString(row, 'emp_id')
ls_empname = thisGetItemString(row, 'emp_name')
ld_salary = thisGetItemDecimal(row, 'salary')
ls_deptid = thisGetItemString(row, 'dept_id')
//其中的this表示当前数据窗口,因为代码写在数据窗口的事件中,所以代词this就可以代表了。
GetItemString是获取字符型字段的值的函数,GetItemDecimal是获取decimal类型数字的函数。
同样也可以这么写ls_empid = thisobjectemp_id[row]
可以尝试把 timer interval 间隔时间设长一点
或者 datawindow 的 retrievestart 事件 return 设成 2 ,这个要配合你的 retrieve 参数
1、得到当前鼠标所指对象所在的带区
string str_band
str_band=GetBandAtPointer() //得到当前鼠标所指对象所在的带区
str_band=left(str_band,(pos(str_band,'~t') - 1))//得到"header"、"detail"等
if str_band<>'header' then return //单击非头区,退出
2、得到鼠标指向的列对象名
str_object=GetObjectAtPointer() //得到当前鼠标所指对象名
str_object=left(str_object,(pos(str_object,'~t') - 1))
//得到列对象名(默认为列名_t为列标题)
str_column=left(str_object,(len(str_title) - 2))
//判断该名称是否为列名字
if thisdescribe(str_column+"band")='!' then return //非是列名,即列标题不是按正常规律起名的。
3、得到当前行、列,总行、列 //this 针对数据窗口而言
li_col = thisGetColumn()
li_ColCount = long(describe(this,"datawindowcolumncount"))
ll_row = thisGetRow()
ll_RowCount = thisRowCount()
//设置当前行、列
scrolltorow(this,ll_Row)
setrow(this,ll_Row)
setcolumn(this,li_col)
thisSetFocus()
4、得到所有列标题
ll_colnum = Long(dw_1objectdatawindowcolumncount)
for i = 1 to ll_colnum
//得到标题头的名字
ls_colname = dw_1describe('#' + string(i) + "name") + "_t"
ls_value = dw_1describe(ls_colname + "text")
next
5、如何用代码取得数据窗口汇总带计算列的值
String ls_value
ls_value = dw_1Describe("Evaluate("'compute_1',1)")
//如果是数值型,要转换。
以上就是关于pb数据窗口的疑问全部的内容,包括:pb数据窗口的疑问、pb中如何在singlelineedit中显示数据窗体dw_1中的行数,如何使数据窗口的数据可复制至剪贴板。、pb中dw中怎么控制打印行数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)