N-UP分栏式数据窗口如何动态修改列数?
数据窗口设计时rows per detail的值是2,但是想根据ini文件控制程序在运行时这个数据窗口显示的数据的列数,比如运行时显示10列,求教怎么实现,网上有说通过dw_1.modify("DataWindow.Rows_Per_Detail=10")这样的语法来实现,但是这个不起作用。 其实你可以参照Edit source语法,按照要求修改,然后用语法生成数据窗口。 //得到分栏数STRING ls_Count
ls_Count=dw_Data.Describe("DataWindow.Rows_Per_Detail")
IF ls_Count="!" OR ls_Count="?" OR ls_Count="" THEN RETURN
//获得数据源语法
STRING ls_Syntax
ls_Syntax=dw_Data.Describe("DataWindow.Syntax")
//查找,仔细看,这是我的厉害之处,代码纯手敲,网上没有的
STRING ls_Sparse="",ls_Sparses[]
ls_Sparses="Rows_Per_Detail = "+ls_Count //DW自己的生成的语法等号左右有空格
ls_Sparses="Rows_Per_Detail="+ls_Count //我自己创建的语法一般不保留空格
ls_Sparses="Rows_Per_Detail ="+ls_Count //这个少打了个空格
ls_Sparses="Rows_Per_Detail= "+ls_Count //也是少打了个空格,以上四种最常见,特殊的不考虑
LONG ll_Loop,ll_Position
FOR ll_Loop=UpperBound(ls_Sparses[]) TO 1 STEP -1
ll_Position=PosW(ls_Syntax,ls_Sparses)
IF ll_Position<1 THEN CONTINUE
ls_Sparse=ls_Sparses
EXIT
NEXT
IF ls_Sparse="" THEN RETURN
//拆出前后
STRING ls_Part[]
ls_Part=MidW(ls_Syntax,1,ll_Position - 1)
ls_Part=MidW(ls_Syntax,ll_Position + LenW(ls_Sparse))
//重新组合,这次是分100列,以下那种都可以
ls_Syntax=ls_Part + "Rows_Per_Detail = 100" + ls_Part
ls_Syntax=ls_Part + "Rows_Per_Detail=100" + ls_Part
ls_Syntax=ls_Part + "Rows_Per_Detail =100" + ls_Part
ls_Syntax=ls_Part + "Rows_Per_Detail= 100" + ls_Part
dw_Data.Create(ls_Syntax)
swimchen 发表于 2023-9-25 06:33
//得到分栏数
STRING ls_Count
ls_Count=dw_Data.Describe("DataWindow.Rows_Per_Detail")
学习了!谢谢大佬!:handshake
页:
[1]