创建显示特殊文档的视图:$FormulaClass的奥秘

一般情况下,视图都是用来显示文档的。实际上通过更改视图 $FormulaClass 的值,我们可以让它显示其他的内容。参照下表:

Note Class Type Hex Value Decimal Value Comments
NOTE_CLASS_DOCUMENT 0x0001 1 document note
NOTE_CLASS_INFO 0x0002 2 notefile info (help-about) note
NOTE_CLASS_FORM 0x0004 4 form note
NOTE_CLASS_VIEW 0x0008 8 view note
NOTE_CLASS_ICON 0x0010 16 icon note
NOTE_CLASS_DESIGN 0x0020 32 design note collection
NOTE_CLASS_ACL 0x0040 64 acl note
NOTE_CLASS_HELP_INDEX 0x0080 128 Notes product help index note
NOTE_CLASS_HELP 0x0100 256 designer’s help note
NOTE_CLASS_FILTER 0x0200 512 filter note
NOTE_CLASS_FIELD 0x0400 1024 field note
NOTE_CLASS_REPLFORMULA 0x0800 2048 replication formula
NOTE_CLASS_PRIVATE 0x1000 4096 Private design note, use $PrivateDesign view to locate/classify
NOTE_CLASS_DEFAULT 0x8000 32,768 MODIFIER – default version of each
NOTE_CLASS_ALL 0x7fff 32,767 all note types
NOTE_CLASS_ALLNONDATA 0x7ffe 32,766 all non-data notes
NOTE_CLASS_NONE 0x0000 0 no notes

比如我们一般的视图,$FormulaClass 的值为1,所以显示一般文档 ;如果是4,则显示所有表单设计元素(实际上,每个设计元素都可以说是一种特殊的文档)。另外还可以这样用:如果将 $FormulaClass 的值指定为 1548(4 + 8 + 512 + 1024),则可以同时显示表单、视图等几种设计元素。

修改 $FormulaClass 域的方法,可以通过类似如下的代码实现:

Set view= db.GetView(“FormView”)
Set doc = db.GetDocumentByUNID(view.UniversalID)
Call doc.ReplaceItemValue(“$FormulaClass”, “4”)

至于这样的视图有什么用,就要看自己的想像力了。比如创建一个包含所有设计元素的视图,就可以通过名字来查找设计元素文档了。

请参考 Modifying $FormulaClass in ViewsFun with $FormulaClass