如何获得dw中可以看到的列列表?
当我使用dwobject.object.datawindow.column.count
遍历列时,我获得了sql中的所有列。是否至少有一种方法可以找出哪些不显示?
答案 0 :(得分:1)
Long li_Loop
String ls_ColName, lsa_ColNames[]
FOR li_Loop = 1 TO dwobject.object.datawindow.column.count
ls_ColName = dwobject.Describe("#" + String( ll_Loop ) + ".Name")
IF Long( dwobject.Describe( ls_ColName + ".Visible") ) > 0 THEN
lsa_ColNames[ UpperBound(lsa_ColNames[]) + 1] = ls_ColName
END IF
next
//数组lsa_ColNames []包含所有可见列名称。
答案 1 :(得分:0)
我自己设法找到了它:
Integer li_col_idx, &
li_pos
String ls_objects, &
ls_contorl, &
ls_columns[], &
ls_type, &
ls_visible
li_col_idx = 1
ls_objects = dw_tab.object.datawindow.objects // Forgot to add this row
DO while ls_objects <> ""
li_pos = Pos(ls_objects, "~t")
IF li_pos > 0 THEN
ls_control = left(ls_objects, li_pos - 1)
ls_objects = mid(ls_objects, li_pos + 1)
ELSE
ls_control = ls_objects
ls_objects = ""
END IF
ls_type = dw_tab.describe(ls_control + ".type")
ls_visible = dw_tab.describe(ls_control + ".visible")
IF ls_type = "column" AND ls_visible = "1" THEN
ls_columns[li_col_idx] = ls_control
li_col_idx++
END IF
LOOP
答案 2 :(得分:0)
在最近的代码中,我通过查看编辑样式改进了(希望如此)上面的内容。我不仅需要查找活动/显示的列,而且可以使用隐藏列(无可视控件(VC))设置排序,并且无法指示(请参阅&#34;列排序指示符上的线程&# 34。)
ls_control = idw.describe(ls_next_column + ".type")
if f_IsEmpty(ls_control) then continue
choose case ls_control
case 'column'
// EDIT STYLE; dddw, ddlb, edit, mask...
ls_control = idw.Describe(ls_next_column + ".Edit.Style")
if f_IsEmpty(ls_control) then continue
choose case ls_control
case '?', '!'
continue
case else
. . .
这个编辑样式是空的,?要么 !当列没有VC时。一旦你知道它是一个VC,那么检查它是否可见或者是否需要它。对于我的代码,我只保留一份VC列表,然后检查是否可以表示......
答案 3 :(得分:0)
我编写了以下函数来正确评估数据对象中对象(列,计算,文本等)的属性。
示例:以下代码将返回&#39; 1&#39;如果location_id列当前可见或者是&#39; 0&#39;如果它目前不可见。如果可见表达式包含复杂表达式并不重要。
putStrLn
我已经以某种形式使用它多年了。请享用! Chris Daugherty