SetTabOrder(i,0)之后,如何还原到初始状态

时间:2022-09-05 00:22:38
integer max_column,i
max_column= integer(dw.Describe("DataWindow.Column.Count"))
FOR i=1 TO max_column
dw.SetTabOrder(i,0)
NEXT
可将所有列TabOrder置为0
可是如何还原呢

4 个解决方案

#1


没有办法还原
除非你把原始的TabOrder保存起来,才能还原
比如说你把每个列的TabOrder保存在列的Tag里,还原的时候从Tag里取出来设置

#2


方法一:重新设置数据窗口的dataobject,TabOrder自动就恢复原状了。
dw_1.dataobject = 'dw_xxx'
dw_1.settransobject(sqlca)

方法二:如果原始所有列的TabOrder都不为0,就按照你代码中设为0的方式自己去加好了。
integer max_column,i,j=10
max_column= integer(dw.Describe("DataWindow.Column.Count"))
FOR i=1 TO max_column
  dw.SetTabOrder(i,j)
  j = j + 10
NEXT

方法三:你可以换个思路,既然是将所有列的TabOrder都设为0,你还不如直接设置ReadOnly属性。
dw_1.Modify("DataWindow.ReadOnly=Yes")
等需要恢复的时候dw_1.Modify("DataWindow.ReadOnly=No")

方法四:也可以用列的protect的属性来操作。
integer i
string ls_protect
for i=1 to integer(dw.Describe("DataWindow.Column.Count")) step 1
ls_protect = "#"+String(i)+".protect = 1"
this.modify(ls_protect)
next
恢复的时候将protect设为0即可

#3


作一个循环,使用tabsequence这个属性来实现。例如:object.column.tabsequence=0

#4


记下来!

#1


没有办法还原
除非你把原始的TabOrder保存起来,才能还原
比如说你把每个列的TabOrder保存在列的Tag里,还原的时候从Tag里取出来设置

#2


方法一:重新设置数据窗口的dataobject,TabOrder自动就恢复原状了。
dw_1.dataobject = 'dw_xxx'
dw_1.settransobject(sqlca)

方法二:如果原始所有列的TabOrder都不为0,就按照你代码中设为0的方式自己去加好了。
integer max_column,i,j=10
max_column= integer(dw.Describe("DataWindow.Column.Count"))
FOR i=1 TO max_column
  dw.SetTabOrder(i,j)
  j = j + 10
NEXT

方法三:你可以换个思路,既然是将所有列的TabOrder都设为0,你还不如直接设置ReadOnly属性。
dw_1.Modify("DataWindow.ReadOnly=Yes")
等需要恢复的时候dw_1.Modify("DataWindow.ReadOnly=No")

方法四:也可以用列的protect的属性来操作。
integer i
string ls_protect
for i=1 to integer(dw.Describe("DataWindow.Column.Count")) step 1
ls_protect = "#"+String(i)+".protect = 1"
this.modify(ls_protect)
next
恢复的时候将protect设为0即可

#3


作一个循环,使用tabsequence这个属性来实现。例如:object.column.tabsequence=0

#4


记下来!