|
本帖最后由 joint 于 2017-6-28 14:36 编辑
_ArrayDisplay
在列表视图中显示 1D 或 2D 数组.
#include <Array.au3>
_ArrayDisplay ( Const ByRef $aArray [, $sTitle = "ArrayDisplay" [, $sArrayRange = "" [, $iFlags = 0 [, $vUser_Separator = Default [, $sHeader = Default [, $iMax_ColWidth = Default [, $iAlt_Color = Default [, $hUser_Function = ""]]]]]]]] )
参 数
$aArray 目标数组
$sTitle [可选] 对话框标题. 默认 = "显示数组"(译注: 在包含文件已汉化时).
$sArrayRange [可选] 显示的行/列范围. 默认值 = 整个数组 (详细信息见下文).
$iFlags [可选] 确定 UDF 选项. 将所需的值相加 - 默认值 = 0.
1 - 交换数组
列文本对齐方式: 2 (右对齐) 或 4 (居中对齐) (默认 = 左对齐)
8 - verbose = 大型数组处理过程中发生错误时显示 MsgBox 提示错误并闪屏
16 - 仅显示 '复制' 按钮
32 - 不显示按钮
64 - No 'Row' column displayed
$vUser_Separator [可选] 设置复制数据到剪贴板的列选项.
字符 = 列之间的分隔符.
数字 = 设置列宽 - 较长的项目将被截断.
Default(默认值) = 当前的分隔符字符 (通常为 "|").
$sHeader [可选] 列标题 (标题由当前分隔符 - 通常为 "|" 分隔). 关键字 Default(默认值) 见备注.
$iMax_Colwidth [可选] 列表视图的列最大宽度. 关键字 Default(默认值) = 350 像素.
$iAlt_Color [可选] 列表视图交替行的背景颜色. 关键字 Default(默认值) = 所有行同一颜色.
$hUser_Function [可选] 用户定义的运行函数. 默认值 = "" 无运行函数. 见备注.
返 回 值
成功: 返回 1
失败: 返回 0, @error 设置为下列值:
@error: 1 - $aArray 不是数组
2 - $aArray 为多维数组 (仅适用 1D 与 2D 数组)
备 注
如果函数传递超过 2 个维度的非数组变量或数组, 函数返回一个错误, 并且脚本将继续执行.
如果已设置 $iFlags 参数为 "8 - verbose", 则在返回错误之前, MsgBox 将提示立即退出脚本, 或返回正常错误并继续脚本.
只能显示 65525 行的数组 - 这是受 AutoIt GUI 中控件显示总数的限制 - 列数也被限制为 250 列.
如果用户尝试显示的数组大于这些限制, "*" 将被添加到截断的维度值, 并将显示为红色文本.
注意: 使用 $iArrayRange 允许设置显示的元素可以大于显示限制, 即将数组分为若干个显示部分.
$sArrayRange 参数的语法如下所示:
"7" - 显示 0-7 行的所有列
"7:" - 显示 7 到结束行的所有列
"|7" - 显示 0-7 列的所有行
"|7:" - 显示 7-结束列的所有行
"7|7" - 显示 0-7 行和 0-7 列
"5:7" - 显示 5-7 行的所有列
"|5:7" - 显示 5-7 列的所有行
"7|5:7" - 显示 0-7 行和 5-7 列
"5:7|7" - 显示 5-7 行和 0-7 列
"5:7|5:7" - 显示 5-7 行和 5-7 列
对于 1D 数组将忽略任何列的值.
$sHeader 列标题 (以当前分隔符分隔) 将用于多列标题.
如果未设置, 或设置的标题不足, 则默认使用一维数组标题为 "Row|Col0"; 二维数组标题为 "Row|Col0|Col1|...|Col n".
对话框的底部有 4 个按钮: (译注 - 按钮文本设定为包含文件已汉化)
- 复制数据与列标题 - 将数组或选定行复制到剪贴板, 并添加完整的标题和行标识.
- 仅复制数据 - 将数组或选定行复制到剪贴板, 没有标题或行标识.
- 运行用户函数 - 运行 $sUser_Function 定义的用户函数.
此函数是完全独立的 UDF, 并且必须由用户创建, 和编码接受 2 个参数:
完整数组和一维数组选定行索引, [0] 为元素计数.
如果没有指定函数则该按钮被禁用.
- 退出脚本 - 立即退出脚本.
The $iFlags 参数隐藏部分或所有按钮
如果显示所有按钮, 则数组维数会显示在左下角.
如出现以下情况则显示红色文本: 行/列截断, 数组换位, 或只显示一个范围的元素 - 工具提示显示发生的特定项
当显示的数组超过 10000 个元素, 并且 $iFlags 设置为 "8 - verbose", 初始处理过程将显示启动对话框.
当显示超过 10000 个元素的数组时使用"复制数据"按钮, 也将显示一个类似的对话框. 这种情况下应考虑使用 "用户函数" 存储供以后处理的数组.
函 数 示 例
复制到剪贴板 #include <Array.au3>
#include <MsgBoxConstants.au3>
Example()
Func Example()
; 创建一维数组并显示.
Local $aArray_1D[5] = ["项目 0", "项目 1", "这个项目 2 的文本较长, 将扩展显示列宽度", "项目 3", "项目 4"]
_ArrayDisplay($aArray_1D, "1D 显示")
_ArrayDisplay($aArray_1D, "1D 显示调换 - 仅有 <复制> 按钮", Default, 1 + 16) ; 仅显示 <复制> 按钮
; 创建二维数组并显示.
Local $aArray_2D[75][255]
For $i = 0 To UBound($aArray_2D) - 1
For $j = 0 To UBound($aArray_2D, 2) - 1
$aArray_2D[$i][$j] = "项目 " & StringFormat("%02i", $i) & StringFormat("%02i", $j)
Next
Next
_ArrayDisplay($aArray_2D, "2D 显示") ; 注意列被截断
_ArrayDisplay($aArray_2D, "2D 显示换位", Default, 1) ; 注意显示了所有数组元素
ReDim $aArray_2D[20][10]
$aArray_2D[5][5] = "这里设置一段较长的文本, 以便查看项目自动扩展显示列的效果"
_ArrayDisplay($aArray_2D, "扩展列 - 自定义标题 - 交替行的颜色 - 无按钮或 'Row' 列", Default, 32 + 64, Default, "AA|BB|CC|DD|EE|FF|GG|HH|II|JJ", Default, 0xDDFFDD)
; 将用户函数赋给一个变量作为参数进行传递
Local $hUserFunction = _UserFunc
$aArray_2D[5][5] = "设置列为右对齐"
_ArrayDisplay($aArray_2D, "设置范围 - 右对齐 - 复制列宽 - 用户函数", "3:7|4:9", 2, 15, "AA|BB|CC|DD|EE|FF", Default, Default, $hUserFunction)
_ArrayDisplay($aArray_2D, "设置范围 - 右对齐 - 复制列宽 - 换位", "3:7|4:9", 3, 15, "AA|BB|CC|DD|EE|FF") ; 注意到没有列名称换位
; 创建非数组变量强制出现错误 - MsgBox 将按 $iFlags 设置显示
Local $vVar = 0
_ArrayDisplay($vVar, "MsgBox 提示错误", Default, 8)
EndFunc ;==>Example
; 注意用户函数必须有两个参数, 即使你不打算使用它们
Func _UserFunc($aArray_2D, $aSelected)
; 如果不使用参数, 则会引起 Au3Check 语法检查警告
#forceref $aArray_2D
_ArrayDisplay($aSelected, "选定列")
EndFunc ;==>_UserFunc |
|