点击或拖拽改变大小

Functions.AMembers 方法

X#
-- todo --
将对象的属性、过程和成员对象的名称放入变量数组中。

命名空间:  XSharp.VFP
程序集:  XSharp.VFP (在 XSharp.VFP.dll 中) 版本:2.22 GA
语法
 FUNCTION AMembers(
	ArrayName,
	oObjectNameOrClassName,
	nArrayContentsID,
	cFlags
) AS USUAL CLIPPER
查看代码

参数

ArrayName (Optional)
类型:__Usual
指定存放 oObjectName 成员属性名称的数组。 如果指定的数组不存在,系统会自动创建该数组。 如果数组不够大,无法容纳所有名称,X# 会自动增加数组的大小。
oObjectNameOrClassName (Optional)
类型:__Usual
指定要将其成员属性放入 ArrayName 指定的变量数组中的对象或 X# 类。 这可以是任何计算结果为对象的表达式,如对象引用、对象变量或对象数组元素。
nArrayContentsID (Optional)
类型:__Usual
指定数组的内容。
cFlags (Optional)
类型:__Usual
指定应用于 AMembers() 函数返回的数组的过滤。 当 AMembers() 传递 COM 对象时(ArrayContentsID 的值为 3),cFlags 将不起作用。 某些标志是互斥的,因此如果使用多个 cFlag,请按以下分组使用:
1[P | H | G] [N | U] [C] [I | B] [R]

返回值

类型:__Usual
数值
备注
描述
0 指定数组包含单列属性名称。省略 nArrayContentsID 参数等同于传递 0。
1 指定数组包含对象或类的属性名称,以及方法和成员对象。 结果数组是二维的,第二列指定第一列中列出的成员类型。 第二列的可能值为 Property、Event、Method 或 Object。
2 指定数组包含 oObjectName 指定的原生 X# 对象的成员对象的名称。结果数组是一维的。 此选项提供了一种方法来确定容器中子对象的名称,例如表单集中的所有 Form 对象或表单中的控件。
3 指定数组包含一个或多个对象的信息。您可以传递原生 X# 对象或 COM 对象的对象引用。
备注 备注:
在 .app 或 .exe 应用程序中不支持此参数值为 3。
指定此参数时返回的数组由四列组成,如备注部分的表格所述:
描述
1事件或方法的名称
2属性类型(例如,PROPERTYPUT、PROPERTYGET、PROPERTYPUTREF、METHOD)
3 函数签名(参数及其类型,以及函数返回类型)。 此信息类似于 IntelliSense 展开方法时提供的快速信息文本。
4帮助字符串
如果省略 nArrayContentsID,AMembers() 返回一个包含属性的单列数组。

下表描述了 cFlags 的有效值。
过滤标志
P受保护的属性、方法或事件
H隐藏的属性、方法或事件
G公共属性、方法或事件
N原生(内部)属性、方法或事件
U用户定义(外部)属性、方法或事件
C已更改的属性(但不包括已更改的数组属性)
I继承的属性、方法或事件
B基本属性、方法或事件(使用 AddProperty 方法)
R只读属性
cFlags 指定的过滤的默认配置是标志之间的逻辑 OR。您可以使用特殊的 "+" cFlags 来更改这一点。
特殊标志
#向输出数组添加一个新列,其中包含相应的 cFlags 值。
+在过滤标志之间执行逻辑 AND。
AMembers() 返回对象的对象、属性和过程的数量,如果无法创建数组则返回 0。 如果省略可选的 1、2 或 3 标志参数,将创建一个包含 oObjectName 属性的一维数组。 您可以将 COM 对象引用传递给 AMembers() 函数,但在这样做时,您还必须在第三个(标志)参数中传递值 3, 如以下示例所示。
X#
1oExcel = CreateObject("excel.application")
2= AMembers(gaPropArray, oExcel, 3)
示例
X#
1Clear
2goForm1 = CreateObject("Form")  // 创建一个表单
3= AMembers(gaPropArray, goForm1, 1)  // 包含表单属性的数组
4Display MEMORY LIKE gaPropArray  // 显示表单属性
参见