# win.ui.ctrl.listview 库模块帮助文档

<details>  <summary>说明</summary>  <p>

listview 控件部分初始化属性：

| 属性面板名称| 属性字段名 | 可选值 | 默认值
| ----------- | ----------- | ----------- | ----------- |
| 模式      | mode       | report,list,icon,smallicon| report
| 允许多选  | multiSelect | true,false| true |
| 保持选定（取反） | hideSel | true,false | false  |
| 选中整行  | fullRow | true,false| false |
| 垂直滚动条  | vscroll | true,false| false |
| 水平滚动条  | hscroll | true,false| false |
| 允许编辑  | editable | true,false| false |

更多属性请参考 listview 控件源码。
大多数初始化属性需要写在初始化参数表里才有效，例如：

```aardio
winform.add(
listview={cls="listview";hideSel=1;multiSelect=false;left=219;top=157;right=435;bottom=344;edge=1;z=1}
)
```

</p></details>

## win.ui.ctrl 成员列表 <a id="win.ui.ctrl" href="#win.ui.ctrl">&#x23;</a>

### win.ui.ctrl.listview() <a id="win.ui.ctrl.listview" href="#win.ui.ctrl.listview">&#x23;</a>
列表视图  

[返回对象:listviewObject](#listviewObject)

## listviewObject 成员列表 <a id="listviewObject" href="#listviewObject">&#x23;</a>

### listviewObject._defWindowProc(hwnd,message,wParam,lParam) <a id="listviewObject._defWindowProc" href="#listviewObject._defWindowProc">&#x23;</a>
用于在 wndproc 回调中提前调用默认消息回调函数,  
所有窗口和控件定义了 wndproc 回调以后会自动创建这个函数,  
调用此函数以后,wndproc 必须指定非 null 返回值,  
以避免再次重复调用默认回调函数

### listviewObject._parentForm <a id="listviewObject._parentForm" href="#listviewObject._parentForm">&#x23;</a>
返回创建控件的容器窗口（win.form对象），所有窗口控件都拥有此只读属性。  
对于使用窗体设计器创建的窗口，也就是返回设计时窗体容器。  

即使子窗口移除子窗口样式、更改父子关系，或以 orphanWindow显示，  
控件的 _parentForm 始终都不会改变  

[返回对象:winform](https://www.aardio.com/zh-cn/doc/library-reference/win/ui/_.html#winform)

### listviewObject.addCtrl <a id="listviewObject.addCtrl" href="#listviewObject.addCtrl">&#x23;</a>

```aardio
listviewObject.addCtrl(  
	edit ={ cls="edit";left=0;top=0;right=50;bottom=50;autoResize=false ;hide=1;edge=1;  }  
)
```

### listviewObject.addItem(LVITEM对象,位置) <a id="listviewObject.addItem" href="#listviewObject.addItem">&#x23;</a>
参数 @1 可以是指定部分 LVITEM 字段的 table 对象。  
text 字段必须指定项目文本内容（也可以是一个指定多列文本的字符串数组 ）。  
位置参数可省略,默认为 count 属性值。  
返回新增项行号

### listviewObject.addItem(数组,位置) <a id="listviewObject.addItem" href="#listviewObject.addItem">&#x23;</a>
参数 @1 为指定 1 到 n 列显示文本的字符串数组。  
如果数组元素不是字符串也不是指针、空值则自动转换为字符串。  
位置参数可省略,默认为 count 属性值。  
返回新增项行号

### listviewObject.addItem(文本,位置,图像索引) <a id="listviewObject.addItem" href="#listviewObject.addItem">&#x23;</a>
位置参数可省略,默认为 count 属性值。  
图像索引可省略,默认为-1,  
如果列文本不是指针、空值则自动转换为字符串,  
返回新增项行号

### listviewObject.adjust <a id="listviewObject.adjust" href="#listviewObject.adjust">&#x23;</a>

```aardio
listviewObject.adjust = function( cx,cy,wParam ) {	   
	/*父窗口改变大小后会自动触发此事件函数。  
注意 onSize 是 adjust 事件的别名，作用相同。  
所有 win.form 创建的窗体和控件都支持 adjust 事件,  
重复赋值 adjust 会追加事件触发器而非替换原来的值。  

cx 参数为窗口客户区宽度,cy 参数为窗口客户区高度,  
wParam 参数来自 _WM_SIZE 消息的 wParam 参数，一般不用管。  
一般不建议添加一个 wndproc 仅仅是为了处理  _WM_SIZE 消息，  
定义 adjust 事件是更好的选择。  

如果主动调用此函数，则检查并执行所有之前添加的 adjust 事件函数。  
省略调用参数时 cx,cy 参数默认设为窗口大小*/    
};
```

### listviewObject.bottom <a id="listviewObject.bottom" href="#listviewObject.bottom">&#x23;</a>
底部坐标

### listviewObject.capture <a id="listviewObject.capture" href="#listviewObject.capture">&#x23;</a>
是否捕获全局鼠标消息

### listviewObject.checkbox <a id="listviewObject.checkbox" href="#listviewObject.checkbox">&#x23;</a>
是否在每个项目前显示复选框  
注意虚表不存在实际的项也不支持设置项目复选框

### listviewObject.checked <a id="listviewObject.checked" href="#listviewObject.checked">&#x23;</a>
获取或设置所有已勾选项，这是包含所有已勾选的项目行索引的数组。  
此数组内的行索引按实际显示的前后排序。  
必须需先启用控件的复选框功能，才能获取或设置复选项是否勾选。  

注意 selected 属性表示所有鼠标单击选中的项目，而 checked 表示所有复选项被勾选的项目。  
请注意区分。

### listviewObject.className <a id="listviewObject.className" href="#listviewObject.className">&#x23;</a>
运行时类名

### listviewObject.clear() <a id="listviewObject.clear" href="#listviewObject.clear">&#x23;</a>
清空所有项

### listviewObject.clear(true) <a id="listviewObject.clear" href="#listviewObject.clear">&#x23;</a>
清空所有项,并且删除所有列

### listviewObject.clearColumnImage() <a id="listviewObject.clearColumnImage" href="#listviewObject.clearColumnImage">&#x23;</a>
清除所有列的图像索引

### listviewObject.clientHeight <a id="listviewObject.clientHeight" href="#listviewObject.clientHeight">&#x23;</a>
控件窗口客户区宽度，只读属性。

### listviewObject.clientRect <a id="listviewObject.clientRect" href="#listviewObject.clientRect">&#x23;</a>
获取控件客户区块位置(::RECT结构体)

### listviewObject.clientWidth <a id="listviewObject.clientWidth" href="#listviewObject.clientWidth">&#x23;</a>
控件窗口客户区宽度，只读属性。

### listviewObject.close() <a id="listviewObject.close" href="#listviewObject.close">&#x23;</a>
关闭控件窗口

### listviewObject.cls <a id="listviewObject.cls" href="#listviewObject.cls">&#x23;</a>
设计时类名

### listviewObject.columnCount <a id="listviewObject.columnCount" href="#listviewObject.columnCount">&#x23;</a>
列总数

### listviewObject.columns <a id="listviewObject.columns" href="#listviewObject.columns">&#x23;</a>
读取或设置所有的列。  
值为由所有列配置信息的数组，每个列的配置也是一个数组。  
表示单个列的数组格式为 `[标题,列宽,对齐格式]`,  
写入列配置时对齐格式可省略。

### listviewObject.count <a id="listviewObject.count" href="#listviewObject.count">&#x23;</a>
项目总数  
用于实现虚表时可修改此属性

### listviewObject.delColumn() <a id="listviewObject.delColumn" href="#listviewObject.delColumn">&#x23;</a>
删除指定列

### listviewObject.delItem() <a id="listviewObject.delItem" href="#listviewObject.delItem">&#x23;</a>
参数为数值,移除指定索引的项目

### listviewObject.disabled <a id="listviewObject.disabled" href="#listviewObject.disabled">&#x23;</a>
是否禁用

### listviewObject.each(起始索引,选项) <a id="listviewObject.each" href="#listviewObject.each">&#x23;</a>

```aardio
for itemIndex in listviewObject.each(){
	/*遍历所有项*/
}
```

### listviewObject.eachChecked(col) <a id="listviewObject.eachChecked" href="#listviewObject.eachChecked">&#x23;</a>

```aardio
for item,value in listviewObject.eachChecked(){
	/*从后向前倒序遍历所有勾选项,  
迭代变量 item 为勾选项行号,  
迭代变量 value 为  @col 参数所指定列的文本值  
@col 参数省略则默认为1*/
}
```

### listviewObject.eachSelected(col) <a id="listviewObject.eachSelected" href="#listviewObject.eachSelected">&#x23;</a>

```aardio
for item,value in listviewObject.eachSelected(){
	/*从后向前倒序遍历所有选中项,  
迭代变量 item 为选中项目的行号。  
迭代变量 value 为  @col 参数所指定列的文本值  
@col 参数省略则默认为1。  

也可以使用 listview 控件的 selected 属性直接返回所有已选中的行号。*/
}
```

### listviewObject.editLabel(行序号) <a id="listviewObject.editLabel" href="#listviewObject.editLabel">&#x23;</a>
编辑指定项,无参数则编辑选定项  
此函数成功返回编辑文本框句柄  
返则返回0

### listviewObject.enableDoubleBuffering() <a id="listviewObject.enableDoubleBuffering" href="#listviewObject.enableDoubleBuffering">&#x23;</a>
启用双缓冲,  
可用于实现虚表时避免拖动时闪烁

### listviewObject.ensureVisible() <a id="listviewObject.ensureVisible" href="#listviewObject.ensureVisible">&#x23;</a>
滚动视图以确定可以显示参数指定行序号的项,  
不指定参数则设置当前选中焦点项

### listviewObject.fillParent(列序号) <a id="listviewObject.fillParent" href="#listviewObject.fillParent">&#x23;</a>
使指定列自适应父窗口宽度,  
如果不指定列默认调整最后一列,  
用户调整窗口大小时会自动调用此函数调整自适应列

### listviewObject.findItem(查找文本,起始位置,部分匹配,全局搜索) <a id="listviewObject.findItem" href="#listviewObject.findItem">&#x23;</a>
使用文本查找匹配项,  
除第一个参数外,所有参数可选,  
部分匹配仅限于匹配文本开始部分,默认值为true  
全局搜索指搜索到最后一项以后转到第一项继续搜索

### listviewObject.fullRow <a id="listviewObject.fullRow" href="#listviewObject.fullRow">&#x23;</a>
是否选中整行

### listviewObject.getChecked() <a id="listviewObject.getChecked" href="#listviewObject.getChecked">&#x23;</a>
返回指定索引项是否已勾选复选框，需要启用复选框支持

### listviewObject.getClientRect() <a id="listviewObject.getClientRect" href="#listviewObject.getClientRect">&#x23;</a>
控件客户区块位置(::RECT结构体)  

[返回对象:rectObject](https://www.aardio.com/zh-cn/doc/library-reference/global/_.html#rectObject)

### listviewObject.getColumn() <a id="listviewObject.getColumn" href="#listviewObject.getColumn">&#x23;</a>
[返回对象:lvcolumnObject](#lvcolumnObject)

### listviewObject.getColumn(列参数表,列序号) <a id="listviewObject.getColumn" href="#listviewObject.getColumn">&#x23;</a>
参数一可以为空,或是指定LVCOLUMN结构体成员键值的参数表,  
返回LVCOLUMN结构体

### listviewObject.getColumnImage(col) <a id="listviewObject.getColumnImage" href="#listviewObject.getColumnImage">&#x23;</a>
获取指定列的图像索引,参数和返回值都是数值,  
无图像返回null

### listviewObject.getColumnText() <a id="listviewObject.getColumnText" href="#listviewObject.getColumnText">&#x23;</a>
取指定列文本

### listviewObject.getEditControl() <a id="listviewObject.getEditControl" href="#listviewObject.getEditControl">&#x23;</a>
开始编辑时返回编辑控件,  
此控件在完成编辑后会自动销毁,不必手动销毁  
取消发送_WM_CANCELMODE消息即可  

[返回对象:editObject](https://www.aardio.com/zh-cn/doc/library-reference/win/ui/ctrl/edit.html#editObject)

### listviewObject.getExtended() <a id="listviewObject.getExtended" href="#listviewObject.getExtended">&#x23;</a>
获取树视图扩展样式

### listviewObject.getExtended(_LVS_EX) <a id="listviewObject.getExtended" href="#listviewObject.getExtended">&#x23;</a>
获取树视图指定扩展样式

### listviewObject.getFocused(返回字段列号) <a id="listviewObject.getFocused" href="#listviewObject.getFocused">&#x23;</a>
返回表示当前焦点项位置的数值。不存在焦点项则返回0。  

如果指定返回字段列号，则第 2 个返回值为指定列的文本值。  
不指定参数时返回值与 selIndex 属性相同。  
设置 selIndex 属性可修改当前焦点项

### listviewObject.getFont() <a id="listviewObject.getFont" href="#listviewObject.getFont">&#x23;</a>
控件字体(::LOGFONT结构体)  

[返回对象:logfontObject](#logfontObject)

### listviewObject.getHeader() <a id="listviewObject.getHeader" href="#listviewObject.getHeader">&#x23;</a>
返回列标题窗口句柄

### listviewObject.getImageList( _LVSIL ) <a id="listviewObject.getImageList" href="#listviewObject.getImageList">&#x23;</a>
获取图像列表,  
可选使用 _LVSIL_ 前缀常量指定类型

### listviewObject.getItem() <a id="listviewObject.getItem" href="#listviewObject.getItem">&#x23;</a>
返回LVITEM对象,参数为TVITEM结构体或指定部分成员的table对象.  
可选使用参数一指定行号,参考二指定列序号,  
不指定项目序号,则取当前焦点节点作为序号

[返回对象:lvitemObject](#lvitemObject)

### listviewObject.getItemData(行序号) <a id="listviewObject.getItemData" href="#listviewObject.getItemData">&#x23;</a>
获取指定行绑定的数据。  
可用 setItemData 方法绑定数据到指定行。  
 setTable 方法也会自动绑定源数据表。

### listviewObject.getItemRect() <a id="listviewObject.getItemRect" href="#listviewObject.getItemRect">&#x23;</a>
[返回对象:rectObject](https://www.aardio.com/zh-cn/doc/library-reference/global/_.html#rectObject)

### listviewObject.getItemRect(行,列,RECT,选项) <a id="listviewObject.getItemRect" href="#listviewObject.getItemRect">&#x23;</a>
返回表示项目表示项目区块的RECT结构体,  
除第一个参数以外,其他参数为可选参数,  
如果不指定列则返回所在行区块,  
使用_LVIR_前缀常量指定选项

### listviewObject.getItemState(项索引,状掩码 ) <a id="listviewObject.getItemState" href="#listviewObject.getItemState">&#x23;</a>
读取状态值

### listviewObject.getItemText(行,列,缓冲区长度) <a id="listviewObject.getItemText" href="#listviewObject.getItemText">&#x23;</a>
返回指定项指定列文本，列默认值为1,  
如果列指定为-1，则返回一个包含所有列文本的数组,  
缓冲区最大字符数默认为520,  
不指定行序号则默认取当前选中焦点行,  
不指定列则默认设为1

### listviewObject.getNextItem(起始索引,选项) <a id="listviewObject.getNextItem" href="#listviewObject.getNextItem">&#x23;</a>
参数二为一个或多个 _LVNI_ 前缀的常量合并  
默认为 _LVNI_ALL   
起始索引默认为0

### listviewObject.getNotifyCustomDraw() <a id="listviewObject.getNotifyCustomDraw" href="#listviewObject.getNotifyCustomDraw">&#x23;</a>
[返回对象:NMLVCUSTOMDRAWObject](#NMLVCUSTOMDRAWObject)

### listviewObject.getNotifyCustomDraw(code,ptr) <a id="listviewObject.getNotifyCustomDraw" href="#listviewObject.getNotifyCustomDraw">&#x23;</a>
NM_CUSTOMDRAW通知消息返回NMLVCUSTOMDRAW结构体

### listviewObject.getNotifyDispInfo() <a id="listviewObject.getNotifyDispInfo" href="#listviewObject.getNotifyDispInfo">&#x23;</a>
[返回对象:LVDISPINFOObject](#LVDISPINFOObject)

### listviewObject.getNotifyDispInfo(code,ptr) <a id="listviewObject.getNotifyDispInfo" href="#listviewObject.getNotifyDispInfo">&#x23;</a>
该函数限用于onnotify通知回调函数中  
code参数为通知码,ptr参数为NMHDR指针  
如果NMHDR指针指向LV_DISPINFO对象则返回该对象,否则返回空值

### listviewObject.getNotifyMessage() <a id="listviewObject.getNotifyMessage" href="#listviewObject.getNotifyMessage">&#x23;</a>
[返回对象:NMLISTVIEWObject](#NMLISTVIEWObject)

### listviewObject.getNotifyMessage(code,ptr) <a id="listviewObject.getNotifyMessage" href="#listviewObject.getNotifyMessage">&#x23;</a>
该函数限用于onnotify通知回调函数中  
code参数为通知码,如果ptr指向NMLISTVIEW对象则返回该对象.

### listviewObject.getParent() <a id="listviewObject.getParent" href="#listviewObject.getParent">&#x23;</a>
返回父窗口  

[返回对象:staticObject](https://www.aardio.com/zh-cn/doc/library-reference/win/ui/ctrl/static.html#staticObject)

### listviewObject.getPos() <a id="listviewObject.getPos" href="#listviewObject.getPos">&#x23;</a>
返回相对坐标,宽,高  
x,y,cx,cy=win.getPos(hwnd)

### listviewObject.getRect() <a id="listviewObject.getRect" href="#listviewObject.getRect">&#x23;</a>
控件区块位置(::RECT结构体)

### listviewObject.getRect(true) <a id="listviewObject.getRect" href="#listviewObject.getRect">&#x23;</a>
控件屏幕区块位置(::RECT结构体)

### listviewObject.getSelected(项索引) <a id="listviewObject.getSelected" href="#listviewObject.getSelected">&#x23;</a>
指定项是否选中状态

### listviewObject.getSelection(起始索引,返回字段列号) <a id="listviewObject.getSelection" href="#listviewObject.getSelection">&#x23;</a>
获取选中项,返回数值,不存在选中项则返回0  
可选指定起始索引,默认为0,  

返回字段列号为可选参数，  
返回值 2 为参数为返回行指定列的文本值

### listviewObject.getTable() <a id="listviewObject.getTable" href="#listviewObject.getTable">&#x23;</a>
返回数据表。  
如果参数 @1 指定列名数组（被复制为返回表的 fields 字段），  
则返回的每行数据都是名值对，否则返回的每行数据都是文本数组。  

如果参数 @1 为 true，则返回的文本数组第一行为列标题文本数组。

### listviewObject.getTileViewInfo() <a id="listviewObject.getTileViewInfo" href="#listviewObject.getTileViewInfo">&#x23;</a>
返回排列显示相关属性  

[返回对象:tileviewinfoObject](#tileviewinfoObject)

### listviewObject.gridLines <a id="listviewObject.gridLines" href="#listviewObject.gridLines">&#x23;</a>
是否显示网格线

### listviewObject.height <a id="listviewObject.height" href="#listviewObject.height">&#x23;</a>
高度

### listviewObject.hide <a id="listviewObject.hide" href="#listviewObject.hide">&#x23;</a>
当前控件窗口是否隐藏。  
仅检查当前窗口的可见性样式（窗口 是否移除了 _WS_VISIBLE 样式）。  
不考虑父窗口是否可见，不考虑是否被其他窗口遮挡。  
如果需要同时判断父窗口的可见性，应改用 win.isVisible 函数。  

以 `.` 前导的 `.hide()` 作为成员函数被调用时，  
作用等价于将 hide 属性设为 null 。

### listviewObject.hitTest(x坐标,y坐标,是否屏幕坐标) <a id="listviewObject.hitTest" href="#listviewObject.hitTest">&#x23;</a>
该函数返回指定坐标的行号,列号,_LVHT_前缀的状态常量  
如果不指定任何参数,则自动调用 win.getMessagePos() 获取消息坐标  
参数 @3 可省略,默认为 false

### listviewObject.hwnd <a id="listviewObject.hwnd" href="#listviewObject.hwnd">&#x23;</a>
控件句柄

### listviewObject.id <a id="listviewObject.id" href="#listviewObject.id">&#x23;</a>
控件ID

### listviewObject.insertColumn(列名,列宽,位置,样式) <a id="listviewObject.insertColumn" href="#listviewObject.insertColumn">&#x23;</a>
第一个参数可以是标题字符串,图像索引,  
或者指定LVCOLUMN结构体成员的table对象,  

其他参数都是可选参数,  
样式使用_LVCFMT_前缀的常量指定,  
例如_LVCFMT_LEFT为文本左对齐,注意第一列只能左对齐,  
不指定样式则默认左对齐,  
如果列宽为-1,则自动调用fillParent(ind)函数填充剩余空间

### listviewObject.items <a id="listviewObject.items" href="#listviewObject.items">&#x23;</a>
返回或设置包含所有列表项的数组。  
数组的每个元素表示一行数据，每行都是包含所有列文本的字符串数组。  
赋值时也可以传入字符串数组，仅设置每行的第一列文本。  
读取取属性返回的也是嵌套数组，并有一个可选字段 checked 包含了所有勾选的行

### listviewObject.left <a id="listviewObject.left" href="#listviewObject.left">&#x23;</a>
左侧坐标

### listviewObject.modifyStyle(remove,add,swpFlags) <a id="listviewObject.modifyStyle" href="#listviewObject.modifyStyle">&#x23;</a>
修改窗口样式,所有参数都是可选参数,  
@remove 用数值指定要移除的样式,可使用 _WS_ 前缀的常量  
@add 用数值指定要添加的样式,可使用 _WS_ 前缀的常量  
@swpFlags 可选用数值指定调整窗口选项,可使用 _SWP_ 前缀的常量  
如果指定了 @swpFlag ,则使用该参数调用::SetWindowPos  
细节请参考 win.modifyStyle 函数源码

### listviewObject.modifyStyleEx(remove,add,swpFlags) <a id="listviewObject.modifyStyleEx" href="#listviewObject.modifyStyleEx">&#x23;</a>
修改窗口扩展样式,所有参数都是可选参数,  
@remove 用数值指定要移除的样式,可使用 _WS_EX_ 前缀的常量  
@add 用数值指定要添加的样式,可使用 _WS_EX_ 前缀的常量  
@swpFlags 可选用数值指定调整窗口选项,可使用 _SWP_ 前缀的常量  
如果指定了 @swpFlag ,则使用该参数调用::SetWindowPos  
细节请参考 win.modifyStyle 函数源码

### listviewObject.oncommand <a id="listviewObject.oncommand" href="#listviewObject.oncommand">&#x23;</a>

```aardio
listviewObject.oncommand = function(id,event){  
	/*命令事件触发*/  
}
```

### listviewObject.onnotify <a id="listviewObject.onnotify" href="#listviewObject.onnotify">&#x23;</a>

```aardio
listviewObject.onnotify = function(id,code,ptr){  
	/*通知事件触发*/  
}
```

### listviewObject.orphanWindow(transparent,hwndBuddy,borderless) <a id="listviewObject.orphanWindow" href="#listviewObject.orphanWindow">&#x23;</a>
创建悬浮窗口。  
悬浮窗口是模仿子窗口外观效果的独立窗口，父窗口可自动调整子窗口到设定位置。  
可选参数 @transparent 为 true 则转换为分层透明窗口。  
可选利用 @hwndBuddy 参数指定外部进程窗口句柄的并附加在内部控件上以实现相同的效果。  
伙伴窗口总是会保持在悬浮窗口前面，并保持相同的大小、位置。  
可重复调用此函数更换伙伴窗口，旧的伙伴窗口必须自行关闭。  
可选指定 @borderless 参数 为 true 以移除 @hwndBuddy  的窗口边框。

### listviewObject.postMessage(msg,wParam,lParam) <a id="listviewObject.postMessage" href="#listviewObject.postMessage">&#x23;</a>
投递窗口消息到消息队列中  
此函数用法请参考 ::User32.PostMessage

### listviewObject.redraw() <a id="listviewObject.redraw" href="#listviewObject.redraw">&#x23;</a>
刷新

### listviewObject.reduce(array,callback,debounce) <a id="listviewObject.reduce" href="#listviewObject.reduce">&#x23;</a>

```aardio
listviewObject.reduce(  
	["✶";"✸";"✹";"✺";"✹";"✷"],  
	function(value,index,length,currentTime){  
		if(value){  
			listviewObject.setItemText(value + " 正在处理当前项",1,2);  
		}  
		/*参数 1 @array 指定要循环处理每个元素的数组或表。  
@array 指定为 false 则取消之前创建的防抖单例循环。  

参数 2 @callback 指定回调函数。  

    回调函数中可返回本次间隔延时，以毫秒为单位。  
    返回 0、null、false、以及不能转换为非 0 数的值中断处理。  
    回调参数为：当前数组元素值,当前索引,数组长度,本轮动画已执行毫秒数,  
    处理到数组尾部时回调参数 @1 为 null,  
    如果此时仍然返回可转换为非 0 数的值,将转到第一个数组元素重复循环。  

参数 3 @debounce 指定是否创建为防抖单例循环，默认为 true。*/  
		return 150;  
	}   
)
```

### listviewObject.replaceItems() <a id="listviewObject.replaceItems" href="#listviewObject.replaceItems">&#x23;</a>
替换所有列表项。  
参数@1 指定包含所有列表项的数组，格式与 items 属性相同。  
数组的每个项表示一行，每行也必须是包含列文本的数组，  
数组可以有一个可选字段 checked 包含了所有勾选的行。  

此函数不会事先清空列表，而 items 则会事先清空列表。  
当每次替换需要删除的项数较少时，此函数可避免清空导致的闪烁。  
建议先用 enableDoubleBuffering 函数启用双缓冲

### listviewObject.right <a id="listviewObject.right" href="#listviewObject.right">&#x23;</a>
右侧坐标

### listviewObject.scroll(cmd,pos,msg) <a id="listviewObject.scroll" href="#listviewObject.scroll">&#x23;</a>
发送滚动消息 。  
参数 @cmd 用数值指定滚动命令，例如 `7/*_SB_BOTTOM*/`, `6/*_SB_TOP*/`等。  
如果参数 @cmd 指定 `4/*_SB_THUMBPOSITION*/` 则可用参数 @pos 指定滚动条的位置（数值）。  
默认发送 _WM_VSCROLL 消息，可选用参数 @msg 指定消息 ID 为 `0x114/*_WM_HSCROLL*/` 。  
这是所有窗口与控件都继承的公共方法。

### listviewObject.selIndex <a id="listviewObject.selIndex" href="#listviewObject.selIndex">&#x23;</a>
当前获得控件内部输入焦点的选中项。  
这指的是最后一次用鼠标点选的项。  

如果要设置控件本身为输入焦点请调用 setFocus 函数

### listviewObject.selected <a id="listviewObject.selected" href="#listviewObject.selected">&#x23;</a>
获取或设置所有选中项，这是包含所有选中的项目行索引的数组。  
设为 null 或空表清除所有选中项。  

也可以使用 eachSelected 方法创建迭代器并且 for in 循环遍历所有选中项。  

注意 selected 属性表示所有鼠标单击选中的项目，而 checked 表示所有复选项被勾选的项目。  
请注意区分。

### listviewObject.sendMessage(msg,wParam,lParam) <a id="listviewObject.sendMessage" href="#listviewObject.sendMessage">&#x23;</a>
发送窗口消息  
此函数用法请参考 ::User32.SendMessage

### listviewObject.sendNotify(code,row,col) <a id="listviewObject.sendNotify" href="#listviewObject.sendNotify">&#x23;</a>
发送 _WM_NOTIFY 消息。  
参数 @code 指定 _LVN_ 前缀的通知代码。  
参数 @row 指定行号，起始行为 1，0 表示列标题。  
参数 @col 指定列号，起始列为 1。

### listviewObject.setChecked(索引,是否勾选) <a id="listviewObject.setChecked" href="#listviewObject.setChecked">&#x23;</a>
勾选指定索引项前面的复选框，需要启用复选框支持  
参数@1为0则设置全部项目,  
参数@2省略则默认为true

### listviewObject.setColumn({cx=100},列序号) <a id="listviewObject.setColumn" href="#listviewObject.setColumn">&#x23;</a>
改变列宽

### listviewObject.setColumn(列参数表,列序号) <a id="listviewObject.setColumn" href="#listviewObject.setColumn">&#x23;</a>
参数一指定LVCOLUMN结构体成员键值的参数表,  
也可以是LVCOLUMN结构体对象,自动设置掩码参数.

### listviewObject.setColumnImage(col,iImage,fmt) <a id="listviewObject.setColumnImage" href="#listviewObject.setColumnImage">&#x23;</a>
使用 col 指定列索引设置该列的图像索引为iImage,  
第一列 col 的索引值为1,但图像列表的第一个图像索引为 0,  
可选用 fmt 指定图像显示位置,此参数用法参考此函数源码

### listviewObject.setColumnImageList(imgList) <a id="listviewObject.setColumnImageList" href="#listviewObject.setColumnImageList">&#x23;</a>
设置图像列表,  
参数可以是图像列表句柄,也可以传入win.imageList对象

### listviewObject.setColumnText(位置,文本) <a id="listviewObject.setColumnText" href="#listviewObject.setColumnText">&#x23;</a>
设置指定列文本

### listviewObject.setColumnWidth(列宽,列序号,...) <a id="listviewObject.setColumnWidth" href="#listviewObject.setColumnWidth">&#x23;</a>
设置列宽，可指定一个或多个列序号。  
这里不能指定宽度为  -1 。

### listviewObject.setColumns(columns) <a id="listviewObject.setColumns" href="#listviewObject.setColumns">&#x23;</a>
参数 @columns 传入包含所有列配置信息的数组。  
单个列应当是 `[标题,列宽,对齐格式]` 格式的数组，对齐格式可省略。

### listviewObject.setColumns(text1,text2,...) <a id="listviewObject.setColumns" href="#listviewObject.setColumns">&#x23;</a>
可用不定个数的字符串参数用指定要显示的列文本。  
如果参数 @1 为空则清空所有列

### listviewObject.setColumns(texts,widths,alignments) <a id="listviewObject.setColumns" href="#listviewObject.setColumns">&#x23;</a>
参数 @texts 用一个字符串数组指定所有列的显示文本。  
如果参数 @texts 为空则清空所有列,  
可选用参数 @widths 传入一个数值类型的数组指定各列宽度。  
可选用参数 @alignments 传入一个数值类型的数组指定各列对齐样式。

### listviewObject.setExtended(_LVS_EX) <a id="listviewObject.setExtended" href="#listviewObject.setExtended">&#x23;</a>
启用树视图指定扩展样式

### listviewObject.setExtended(_LVS_EX,false) <a id="listviewObject.setExtended" href="#listviewObject.setExtended">&#x23;</a>
取消树视图指定扩展样式

### listviewObject.setFocus() <a id="listviewObject.setFocus" href="#listviewObject.setFocus">&#x23;</a>
设置窗口的焦点到当前控件。  
如果要改变控件内部的焦点到某一行，请设置 selIndex 属性

### listviewObject.setFont(指定字体) <a id="listviewObject.setFont" href="#listviewObject.setFont">&#x23;</a>
指定LOGFONT字体对象,或逻辑字体句柄

### listviewObject.setFont(混入字体属性) <a id="listviewObject.setFont" href="#listviewObject.setFont">&#x23;</a>

```aardio
listviewObject.setFont(point=10;name="宋体");
```

### listviewObject.setImageList( imageList,_LVSIL ) <a id="listviewObject.setImageList" href="#listviewObject.setImageList">&#x23;</a>
指定图像列表,  
可选使用 _LVSIL_ 前缀常量指定类型  
listview控件在销毁时将自动销毁最后一次指定的图像列表，  
通过替换并且不再使用的图像列表由用户负责销毁

### listviewObject.setItem(LVITEM对象,行序号,列序号) <a id="listviewObject.setItem" href="#listviewObject.setItem">&#x23;</a>
更新项节点,参数为LVITEM结构体或指定部分成员的table对象  
如果参数未指定节点序号,则取当前焦点节点序号  
成功返回true;  
此函数可自动检测非空成员并自动设定相应mask位

### listviewObject.setItemData(行序号,数据) <a id="listviewObject.setItemData" href="#listviewObject.setItemData">&#x23;</a>
绑定数据到指定行。  
数据仅与行号关联，与具体的列表项无关。  
删除或改变列表项不会修改绑定的数据表。  
但清空控件，设置 items 属性都会清除关联的数据表，  
调用 setTable 方法也会绑定新的源数据表。

### listviewObject.setItemPos(项索引,x,y) <a id="listviewObject.setItemPos" href="#listviewObject.setItemPos">&#x23;</a>
设置图标项坐标

### listviewObject.setItemState(项索引,状态位,掩码) <a id="listviewObject.setItemState" href="#listviewObject.setItemState">&#x23;</a>
设置状态,参数三如果省略则使用参数二的值.  
参数@1为0则设置全部项目,

### listviewObject.setItemText(文本,行,列) <a id="listviewObject.setItemText" href="#listviewObject.setItemText">&#x23;</a>
设置项目指定列文本。  
设置的文本如果不是指针或空值则自动转换为字符串。  
不指定行序号则默认取当前选中焦点行,  
不指定列则默认设为1

### listviewObject.setItemText(文本数组,行) <a id="listviewObject.setItemText" href="#listviewObject.setItemText">&#x23;</a>
设置项目指定列的文本。  
- 参数 @1 指定数组或稀疏数组，键为列号（起始列为 1 )。设置文本如果不是指针则自动转换为字符串。  
- 参数 @2 指定行号，起始行号为 1。默认取当前选中焦点行。

### listviewObject.setNotifyDispInfo(ptr,dispinfo) <a id="listviewObject.setNotifyDispInfo" href="#listviewObject.setNotifyDispInfo">&#x23;</a>
参数@1为更新目标指针,  
参数@2必须是getNotifyDispInfo函数的返回值

### listviewObject.setParent(控件对象) <a id="listviewObject.setParent" href="#listviewObject.setParent">&#x23;</a>
改变父窗口

### listviewObject.setPos(x坐标,y坐标,宽,高,插入位置,参数) <a id="listviewObject.setPos" href="#listviewObject.setPos">&#x23;</a>
调整窗口位置或排序,所有参数可选  
同时指定x,y坐标则移动位置  
同时指定宽高则改变大小  
指定插入位置(句柄或_HWND前缀常量)则调整Z序

### listviewObject.setRect(rc) <a id="listviewObject.setRect" href="#listviewObject.setRect">&#x23;</a>
设置控件区块位置(::RECT结构体)

### listviewObject.setRect(rc,true) <a id="listviewObject.setRect" href="#listviewObject.setRect">&#x23;</a>
设置控件屏幕区块位置(::RECT结构体)

### listviewObject.setRedraw(false) <a id="listviewObject.setRedraw" href="#listviewObject.setRedraw">&#x23;</a>
禁止重绘

### listviewObject.setRedraw(true) <a id="listviewObject.setRedraw" href="#listviewObject.setRedraw">&#x23;</a>
恢复重绘

### listviewObject.setSelected(项索引) <a id="listviewObject.setSelected" href="#listviewObject.setSelected">&#x23;</a>
选中项,注意是选中列表项而不是勾选复选框

### listviewObject.setSelected(项索引,false) <a id="listviewObject.setSelected" href="#listviewObject.setSelected">&#x23;</a>
取消选中项,注意是选中而不是勾选复选框

### listviewObject.setTable <a id="listviewObject.setTable" href="#listviewObject.setTable">&#x23;</a>
用 listview 控件显示数据表（包含名值对的对象或数组组成的数组）。  
此函数会自动清空控件之前的所有项。  
如果没有创建任何列，则自动创建标题列。  
如果要重新创建列，请先调用 clear 函数并指定参数为 true 以清空原来的列。

### listviewObject.setTable(dataTable) <a id="listviewObject.setTable" href="#listviewObject.setTable">&#x23;</a>
参数 @dataTable 指定要加载的数据表。  
数据表应当包含行组成的数组。  
数据行可以是数组，也可以是名值，值用 tostring 转为文本显示。  
可选通过数据表的 fields 字段指定要显示的索引数组（键名或索引数值）。  

如果视图控件的标题列为空，则用显示键名（或数组值）创建标题列。  
如果数据行为数组，第一行填充到标题列以后，默认从第二行加载数据。  

可用 startIndex 属性或元属性自定义要加载的起始行。  
可用 length 属性自定义要加载的行数，默认加载所有行。  

sqlite,access,sqlServer 等数据库对象，  
提供的 getTable 函数可获取通过 fields 字段指定列名数组的数据表。

### listviewObject.setTileViewInfo() <a id="listviewObject.setTileViewInfo" href="#listviewObject.setTileViewInfo">&#x23;</a>
设置排列显示相关属性

### listviewObject.show(true) <a id="listviewObject.show" href="#listviewObject.show">&#x23;</a>
显示控件

### listviewObject.theme <a id="listviewObject.theme" href="#listviewObject.theme">&#x23;</a>
外观主题,例如  
winform.button.theme = "Explorer"  
winform.button.theme = false

### listviewObject.threadCallable() <a id="listviewObject.threadCallable" href="#listviewObject.threadCallable">&#x23;</a>
开启此控件的跨线程调用功能

### listviewObject.top <a id="listviewObject.top" href="#listviewObject.top">&#x23;</a>
顶部坐标

### listviewObject.translateCommand() <a id="listviewObject.translateCommand" href="#listviewObject.translateCommand">&#x23;</a>
允许转发转发子窗口的命令（_WM_COMMAND）与通知（_WM_NOTIFY）消息，  
避免子窗口 oncommand，onnotify 等回调失效。  
同时会处理子窗口的 _WM_CTLCOLORSTATIC 等消息，  
以避免部分外观属性失效

### listviewObject.valid <a id="listviewObject.valid" href="#listviewObject.valid">&#x23;</a>
窗口是否有效，  
窗口未关闭返回 true ，  
窗口已关闭或正在关闭返回 false

### listviewObject.value <a id="listviewObject.value" href="#listviewObject.value">&#x23;</a>
返回或设置包含所有列表项的数组。  
数组的每个元素表示一行数据，每行都是包含所有列文本的字符串数组。  
赋值时也可以传入字符串数组，仅设置每行的第一列文本。  
读取取属性返回的也是嵌套数组，并有一个可选字段 checked 包含了所有勾选的行

### listviewObject.width <a id="listviewObject.width" href="#listviewObject.width">&#x23;</a>
宽度

### listviewObject.wndproc <a id="listviewObject.wndproc" href="#listviewObject.wndproc">&#x23;</a>

```aardio
listviewObject.wndproc = function(hwnd,message,wParam,lParam){  
	/*窗口消息回调，返回任意非null值阻止默认回调  
wndproc重复赋值时追加函数而不是覆盖之前的回调  
设为null添除所有消息回调函数  
wndproc也可以是一个表,键要为处理的消息,值为对应的消息回调函数*/	  
}
```

## listviewObject 事件列表 <a id="listviewObjectEvent" href="#listviewObjectEvent">&#x23;</a>

### listviewObject.onCheckedChanged <a id="listviewObject.onCheckedChanged" href="#listviewObject.onCheckedChanged">&#x23;</a>

```aardio
listviewObject.onCheckedChanged = function(checked,item){
	/*勾选状态变更触发此事件。  
checked 为是否勾选，item 为变更项序号*/
}
```

### listviewObject.onClick <a id="listviewObject.onClick" href="#listviewObject.onClick">&#x23;</a>

```aardio
listviewObject.onClick = function(item,subItem,nmListView){
	/*左键单击项目触发此事件。  
item 为变更为焦点的项序号，subItem 为列序号，nmListView 为 NMLISTVIEW 结构体*/
}
```

### listviewObject.onDestroy <a id="listviewObject.onDestroy" href="#listviewObject.onDestroy">&#x23;</a>

```aardio
listviewObject.onDestroy = function(){  
	/*窗口销毁前触发*/  
}
```

### listviewObject.onDoubleClick <a id="listviewObject.onDoubleClick" href="#listviewObject.onDoubleClick">&#x23;</a>

```aardio
listviewObject.onDoubleClick = function(item,subItem,nmListView){
	/*左键双击项目触发此事件。  
item 为变更为焦点的项序号，subItem 为列序号，nmListView 为 NMLISTVIEW 结构体*/
}
```

### listviewObject.onFocusedChanged <a id="listviewObject.onFocusedChanged" href="#listviewObject.onFocusedChanged">&#x23;</a>

```aardio
listviewObject.onFocusedChanged = function(item,subItem,nmListView){
	/*焦点项变更触发此事件。  
item 为变更为焦点的项序号，subItem 为列序号，nmListView 为 NMLISTVIEW 结构体*/
}
```

### listviewObject.onGetDispItem <a id="listviewObject.onGetDispItem" href="#listviewObject.onGetDispItem">&#x23;</a>

```aardio
listviewObject.onGetDispItem = function(item,row,col){
	/*处理 _LVN_GETDISPINFOW 通知消息  
参数 @item 为 LVITEM 结构体,@row 为当前行号,@col 为当前列号,  
返回 item 或包含 item 部分字段则更新 LVITEM 结构体*/
	return {text="要显示的文本"}; 
}
```

### listviewObject.onItemChanged <a id="listviewObject.onItemChanged" href="#listviewObject.onItemChanged">&#x23;</a>

```aardio
listviewObject.onItemChanged = function(item,subItem,nmListView){
	/*项目变更触发此事件。  
item 为变更为焦点的项序号，subItem 为列序号，nmListView 为 NMLISTVIEW 结构体*/
}
```

### listviewObject.onRightClick <a id="listviewObject.onRightClick" href="#listviewObject.onRightClick">&#x23;</a>

```aardio
listviewObject.onRightClick = function(item,subItem,nmListView){
	/*右键点击项目触发此事件。  
item 为变更为焦点的项序号，subItem 为列序号，nmListView 为 NMLISTVIEW 结构体*/
}
```

### listviewObject.onSelChanged <a id="listviewObject.onSelChanged" href="#listviewObject.onSelChanged">&#x23;</a>

```aardio
listviewObject.onSelChanged = function(selected,item,subItem,nmListView){
	/*选中项更触发此事件。  
selected 为是否选中，item 为变更项序号，  
subItem 为列序号，nmListView 为 NMLISTVIEW 结构体*/
}
```

### listviewObject.onSize <a id="listviewObject.onSize" href="#listviewObject.onSize">&#x23;</a>

```aardio
listviewObject.onSize = function( width,height,wParam ) {	   
	/*父窗口改变大小后会自动触发此事件函数。  
注意 onSize 是 adjust 事件的别名，作用相同  
所有 win.form 创建的窗体和控件都支持 onSize（或 adjust）事件,  
重复赋值 onSize（或 adjust）会追加事件触发器而非替换原来的值。  

width 参数为窗口客户区宽度,height 参数为窗口客户区高度,  
wParam 参数来自 _WM_SIZE 消息的 wParam 参数，一般不用管。  
一般不建议添加一个 wndproc 仅仅是为了处理  _WM_SIZE 消息，  
定义 onSize 事件是更好的选择。  

};*/
```

## LVDISPINFOObject 成员列表 <a id="LVDISPINFOObject" href="#LVDISPINFOObject">&#x23;</a>

### LVDISPINFOObject.hdr <a id="LVDISPINFOObject.hdr" href="#LVDISPINFOObject.hdr">&#x23;</a>
[返回对象:nmhdrObject](#nmhdrObject)

### LVDISPINFOObject.item <a id="LVDISPINFOObject.item" href="#LVDISPINFOObject.item">&#x23;</a>
[返回对象:lvitemObject](#lvitemObject)

## NMLISTVIEWObject 成员列表 <a id="NMLISTVIEWObject" href="#NMLISTVIEWObject">&#x23;</a>

### NMLISTVIEWObject.hdr <a id="NMLISTVIEWObject.hdr" href="#NMLISTVIEWObject.hdr">&#x23;</a>
[返回对象:nmhdrObject](#nmhdrObject)

### NMLISTVIEWObject.iItem <a id="NMLISTVIEWObject.iItem" href="#NMLISTVIEWObject.iItem">&#x23;</a>
鼠标指向项的行号  
没有使用则为0

### NMLISTVIEWObject.iSubItem <a id="NMLISTVIEWObject.iSubItem" href="#NMLISTVIEWObject.iSubItem">&#x23;</a>
鼠标指向项的列序号  
没有使用则为0

### NMLISTVIEWObject.lParam <a id="NMLISTVIEWObject.lParam" href="#NMLISTVIEWObject.lParam">&#x23;</a>
附加参数

### NMLISTVIEWObject.ptAction <a id="NMLISTVIEWObject.ptAction" href="#NMLISTVIEWObject.ptAction">&#x23;</a>
[返回对象:pointObject](https://www.aardio.com/zh-cn/doc/library-reference/gdip/core.html#pointObject)

### NMLISTVIEWObject.uChanged <a id="NMLISTVIEWObject.uChanged" href="#NMLISTVIEWObject.uChanged">&#x23;</a>
类似LVITEM结构体中的mask成员  
以LVIF_前缀的常量标明改变的属性

### NMLISTVIEWObject.uNewState <a id="NMLISTVIEWObject.uNewState" href="#NMLISTVIEWObject.uNewState">&#x23;</a>
改变后状态  
由_LVIS_作为前缀的常量指定

### NMLISTVIEWObject.uOldState <a id="NMLISTVIEWObject.uOldState" href="#NMLISTVIEWObject.uOldState">&#x23;</a>
改变前状态  
由_LVIS_作为前缀的常量指定

## NMLVCUSTOMDRAWObject 成员列表 <a id="NMLVCUSTOMDRAWObject" href="#NMLVCUSTOMDRAWObject">&#x23;</a>

### NMLVCUSTOMDRAWObject.clrFace <a id="NMLVCUSTOMDRAWObject.clrFace" href="#NMLVCUSTOMDRAWObject.clrFace">&#x23;</a>
`clrFace`

### NMLVCUSTOMDRAWObject.clrText <a id="NMLVCUSTOMDRAWObject.clrText" href="#NMLVCUSTOMDRAWObject.clrText">&#x23;</a>
文字颜色

### NMLVCUSTOMDRAWObject.clrTextBk <a id="NMLVCUSTOMDRAWObject.clrTextBk" href="#NMLVCUSTOMDRAWObject.clrTextBk">&#x23;</a>
文字背景色

### NMLVCUSTOMDRAWObject.dwItemType <a id="NMLVCUSTOMDRAWObject.dwItemType" href="#NMLVCUSTOMDRAWObject.dwItemType">&#x23;</a>
`dwItemType`

### NMLVCUSTOMDRAWObject.iIconEffect <a id="NMLVCUSTOMDRAWObject.iIconEffect" href="#NMLVCUSTOMDRAWObject.iIconEffect">&#x23;</a>
`iIconEffect`

### NMLVCUSTOMDRAWObject.iIconPhase <a id="NMLVCUSTOMDRAWObject.iIconPhase" href="#NMLVCUSTOMDRAWObject.iIconPhase">&#x23;</a>
`iIconPhase`

### NMLVCUSTOMDRAWObject.iPartId <a id="NMLVCUSTOMDRAWObject.iPartId" href="#NMLVCUSTOMDRAWObject.iPartId">&#x23;</a>
`iPartId`

### NMLVCUSTOMDRAWObject.iStateId <a id="NMLVCUSTOMDRAWObject.iStateId" href="#NMLVCUSTOMDRAWObject.iStateId">&#x23;</a>
`iStateId`

### NMLVCUSTOMDRAWObject.iSubItem <a id="NMLVCUSTOMDRAWObject.iSubItem" href="#NMLVCUSTOMDRAWObject.iSubItem">&#x23;</a>
列序号

### NMLVCUSTOMDRAWObject.nmcd.dwDrawStage <a id="NMLVCUSTOMDRAWObject.nmcd.dwDrawStage" href="#NMLVCUSTOMDRAWObject.nmcd.dwDrawStage">&#x23;</a>
绘图状态

### NMLVCUSTOMDRAWObject.nmcd.dwItemSpec <a id="NMLVCUSTOMDRAWObject.nmcd.dwItemSpec" href="#NMLVCUSTOMDRAWObject.nmcd.dwItemSpec">&#x23;</a>
行序号

### NMLVCUSTOMDRAWObject.nmcd.hdc <a id="NMLVCUSTOMDRAWObject.nmcd.hdc" href="#NMLVCUSTOMDRAWObject.nmcd.hdc">&#x23;</a>
设置句柄

### NMLVCUSTOMDRAWObject.nmcd.hdr <a id="NMLVCUSTOMDRAWObject.nmcd.hdr" href="#NMLVCUSTOMDRAWObject.nmcd.hdr">&#x23;</a>
[返回对象:nmhdrObject](#nmhdrObject)

### NMLVCUSTOMDRAWObject.nmcd.lItemlParam <a id="NMLVCUSTOMDRAWObject.nmcd.lItemlParam" href="#NMLVCUSTOMDRAWObject.nmcd.lItemlParam">&#x23;</a>
自定义数据，LPARAM 参数

### NMLVCUSTOMDRAWObject.nmcd.rc <a id="NMLVCUSTOMDRAWObject.nmcd.rc" href="#NMLVCUSTOMDRAWObject.nmcd.rc">&#x23;</a>
[返回对象:rectObject](https://www.aardio.com/zh-cn/doc/library-reference/global/_.html#rectObject)

### NMLVCUSTOMDRAWObject.nmcd.uItemState <a id="NMLVCUSTOMDRAWObject.nmcd.uItemState" href="#NMLVCUSTOMDRAWObject.nmcd.uItemState">&#x23;</a>
状态值，例如 _CDIS_FOCUS

### NMLVCUSTOMDRAWObject.rcText <a id="NMLVCUSTOMDRAWObject.rcText" href="#NMLVCUSTOMDRAWObject.rcText">&#x23;</a>
[返回对象:rectObject](https://www.aardio.com/zh-cn/doc/library-reference/global/_.html#rectObject)

### NMLVCUSTOMDRAWObject.uAlign <a id="NMLVCUSTOMDRAWObject.uAlign" href="#NMLVCUSTOMDRAWObject.uAlign">&#x23;</a>
对齐

### NMLVCUSTOMDRAWObject.update() <a id="NMLVCUSTOMDRAWObject.update" href="#NMLVCUSTOMDRAWObject.update">&#x23;</a>
更新数据

## lvcolumnObject 成员列表 <a id="lvcolumnObject" href="#lvcolumnObject">&#x23;</a>

### lvcolumnObject.cchTextMax <a id="lvcolumnObject.cchTextMax" href="#lvcolumnObject.cchTextMax">&#x23;</a>
文本缓冲区长度

### lvcolumnObject.cx <a id="lvcolumnObject.cx" href="#lvcolumnObject.cx">&#x23;</a>
宽度

### lvcolumnObject.fmt <a id="lvcolumnObject.fmt" href="#lvcolumnObject.fmt">&#x23;</a>
样式

### lvcolumnObject.iImage <a id="lvcolumnObject.iImage" href="#lvcolumnObject.iImage">&#x23;</a>
图像索引

### lvcolumnObject.iOrder <a id="lvcolumnObject.iOrder" href="#lvcolumnObject.iOrder">&#x23;</a>
序号

### lvcolumnObject.iSubItem <a id="lvcolumnObject.iSubItem" href="#lvcolumnObject.iSubItem">&#x23;</a>
列号

### lvcolumnObject.mask <a id="lvcolumnObject.mask" href="#lvcolumnObject.mask">&#x23;</a>
掩码;

### lvcolumnObject.text <a id="lvcolumnObject.text" href="#lvcolumnObject.text">&#x23;</a>
文本指针  
注意该值是指针类型而不是字符串类型  
转换为字符串必须首先判断mask包含4/*_LVCF_TEXT*/

## lvitemObject 成员列表 <a id="lvitemObject" href="#lvitemObject">&#x23;</a>

### lvitemObject.cColumns <a id="lvitemObject.cColumns" href="#lvitemObject.cColumns">&#x23;</a>
列数目

### lvitemObject.cchTextMax <a id="lvitemObject.cchTextMax" href="#lvitemObject.cchTextMax">&#x23;</a>
文本长度

### lvitemObject.iGroupId <a id="lvitemObject.iGroupId" href="#lvitemObject.iGroupId">&#x23;</a>
组ID

### lvitemObject.iImage <a id="lvitemObject.iImage" href="#lvitemObject.iImage">&#x23;</a>
图像索引

### lvitemObject.iIndent <a id="lvitemObject.iIndent" href="#lvitemObject.iIndent">&#x23;</a>
缩进

### lvitemObject.iItem <a id="lvitemObject.iItem" href="#lvitemObject.iItem">&#x23;</a>
行

### lvitemObject.iSubItem <a id="lvitemObject.iSubItem" href="#lvitemObject.iSubItem">&#x23;</a>
列

### lvitemObject.lParam <a id="lvitemObject.lParam" href="#lvitemObject.lParam">&#x23;</a>
附加值

### lvitemObject.mask <a id="lvitemObject.mask" href="#lvitemObject.mask">&#x23;</a>
掩码

### lvitemObject.puColumns <a id="lvitemObject.puColumns" href="#lvitemObject.puColumns">&#x23;</a>
[返回对象:pointObject](https://www.aardio.com/zh-cn/doc/library-reference/gdip/core.html#pointObject)

### lvitemObject.state <a id="lvitemObject.state" href="#lvitemObject.state">&#x23;</a>
状态码

### lvitemObject.stateMask <a id="lvitemObject.stateMask" href="#lvitemObject.stateMask">&#x23;</a>
状态掩码

### lvitemObject.text <a id="lvitemObject.text" href="#lvitemObject.text">&#x23;</a>
文本指针  
注意该值是指针类型而不是字符串类型  
转换为字符串必须首先判断mask是否包含1/*_LVIF_TEXT*/

## tileviewinfoObject 成员列表 <a id="tileviewinfoObject" href="#tileviewinfoObject">&#x23;</a>

### tileviewinfoObject.cLines <a id="tileviewinfoObject.cLines" href="#tileviewinfoObject.cLines">&#x23;</a>
行数

### tileviewinfoObject.dwFlags <a id="tileviewinfoObject.dwFlags" href="#tileviewinfoObject.dwFlags">&#x23;</a>

```aardio
tileviewinfoObject.dwFlags = _LVTVIF ;
```

### tileviewinfoObject.dwMask <a id="tileviewinfoObject.dwMask" href="#tileviewinfoObject.dwMask">&#x23;</a>

```aardio
tileviewinfoObject.dwMask = _LVTVIM ;
```

### tileviewinfoObject.rcLabelMargin <a id="tileviewinfoObject.rcLabelMargin" href="#tileviewinfoObject.rcLabelMargin">&#x23;</a>
[返回对象:rectObject](https://www.aardio.com/zh-cn/doc/library-reference/global/_.html#rectObject)

### tileviewinfoObject.sizeTile <a id="tileviewinfoObject.sizeTile" href="#tileviewinfoObject.sizeTile">&#x23;</a>
[返回对象:sizeObject](#sizeObject)

### 自动完成常量
_CDIS_CHECKED=8  
_CDIS_DEFAULT=0x20  
_CDIS_DISABLED=4  
_CDIS_FOCUS=0x10  
_CDIS_GRAYED=2  
_CDIS_HOT=0x40  
_CDIS_INDETERMINATE=0x100  
_CDIS_MARKED=0x80  
_CDIS_SELECTED=1  
_CDIS_SHOWKEYBOARDCUES=0x200  
_LVCFMT_BITMAP_ON_RIGHT=0x1000  
_LVCFMT_CENTER=2  
_LVCFMT_COL_HAS_IMAGES=0x8000  
_LVCFMT_FILL=0x200000  
_LVCFMT_FIXED_RATIO=0x80000  
_LVCFMT_FIXED_WIDTH=0x100  
_LVCFMT_IMAGE=0x800  
_LVCFMT_JUSTIFYMASK=3  
_LVCFMT_LEFT=0x0  
_LVCFMT_LINE_BREAK=0x100000  
_LVCFMT_NO_DPI_SCALE=0x40000  
_LVCFMT_NO_TITLE=0x800000  
_LVCFMT_RIGHT=1  
_LVCFMT_SPLITBUTTON=0x1000000  
_LVCFMT_TILE_PLACEMENTMASK=0x300000  
_LVCFMT_WRAP=0x400000  
_LVCF_DEFAULTWIDTH=0x80  
_LVCF_FMT=1  
_LVCF_IDEALWIDTH=0x100  
_LVCF_IMAGE=0x10  
_LVCF_MINWIDTH=0x40  
_LVCF_ORDER=0x20  
_LVCF_SUBITEM=8  
_LVCF_TEXT=4  
_LVCF_WIDTH=2  
_LVFI_NEARESTXY=0x40  
_LVFI_PARAM=1  
_LVFI_STRING=2  
_LVFI_SUBSTRING=4  
_LVFI_WRAP=0x20  
_LVHT_ABOVE=8  
_LVHT_BELOW=0x10  
_LVHT_NOWHERE=1  
_LVHT_ONITEM=0xE  
_LVHT_ONITEMICON=2  
_LVHT_ONITEMLABEL=4  
_LVHT_ONITEMSTATEICON=8  
_LVHT_TOLEFT=0x40  
_LVHT_TORIGHT=0x20  
_LVIF_COLFMT=0x10000  
_LVIF_COLUMNS=0x200  
_LVIF_GROUPID=0x100  
_LVIF_IMAGE=2  
_LVIF_INDENT=0x10  
_LVIF_NORECOMPUTE=0x800  
_LVIF_PARAM=4  
_LVIF_STATE=8  
_LVIF_TEXT=1  
_LVIR_BOUNDS=0  
_LVIR_ICON=1  
_LVIR_LABEL=2  
_LVIR_SELECTBOUNDS=3  
_LVIS_ACTIVATING=0x20  
_LVIS_CUT=4  
_LVIS_DROPHILITED=8  
_LVIS_FOCUSED=1  
_LVIS_GLOW=0x10  
_LVIS_OVERLAYMASK=0xF00  
_LVIS_SELECTED=2  
_LVIS_STATEIMAGEMASK=0xF000  
_LVM_APPROXIMATEVIEWRECT=0x1040  
_LVM_ARRANGE=0x1016  
_LVM_CANCELEDITLABEL=0x10B3  
_LVM_CREATEDRAGIMAGE=0x1021  
_LVM_DELETEALLITEMS=0x1009  
_LVM_DELETECOLUMN=0x101C  
_LVM_DELETEITEM=0x1008  
_LVM_EDITLABEL=0x1017  
_LVM_ENABLEGROUPVIEW=0x109D  
_LVM_ENSUREVISIBLE=0x1013  
_LVM_FINDITEM=0x100D  
_LVM_FIRST=0x1000  
_LVM_GETBKCOLOR=0x1000  
_LVM_GETBKIMAGE=0x1045  
_LVM_GETCALLBACKMASK=0x100A  
_LVM_GETCOLUMN=0x1019  
_LVM_GETCOLUMNORDERARRAY=0x103B  
_LVM_GETCOLUMNW=0x105F  
_LVM_GETCOLUMNWIDTH=0x101D  
_LVM_GETCOUNTPERPAGE=0x1028  
_LVM_GETEDITCONTROL=0x1018  
_LVM_GETEMPTYTEXT=0x10CC  
_LVM_GETEXTENDEDLISTVIEWSTYLE=0x1037  
_LVM_GETFOCUSEDGROUP=0x105D  
_LVM_GETFOOTERINFO=0x10CE  
_LVM_GETFOOTERITEM=0x10D0  
_LVM_GETFOOTERITEMRECT=0x10CF  
_LVM_GETFOOTERRECT=0x10CD  
_LVM_GETGROUPCOUNT=0x1098  
_LVM_GETGROUPINFO=0x1095  
_LVM_GETGROUPINFOBYINDEX=0x1099  
_LVM_GETGROUPMETRICS=0x109C  
_LVM_GETGROUPRECT=0x1062  
_LVM_GETGROUPSTATE=0x105C  
_LVM_GETHEADER=0x101F  
_LVM_GETHOTCURSOR=0x103F  
_LVM_GETHOTITEM=0x103D  
_LVM_GETHOVERTIME=0x1048  
_LVM_GETIMAGELIST=0x1002  
_LVM_GETINSERTMARK=0x10A7  
_LVM_GETINSERTMARKCOLOR=0x10AB  
_LVM_GETINSERTMARKRECT=0x10A9  
_LVM_GETISEARCHSTRING=0x1034  
_LVM_GETITEMCOUNT=0x1004  
_LVM_GETITEMINDEXRECT=0x10D1  
_LVM_GETITEMPOSITION=0x1010  
_LVM_GETITEMRECT=0x100E  
_LVM_GETITEMSPACING=0x1033  
_LVM_GETITEMSTATE=0x102C  
_LVM_GETITEMTEXT=0x1073  
_LVM_GETITEMW=0x104B  
_LVM_GETNEXTITEM=0x100C  
_LVM_GETNEXTITEMINDEX=0x10D3  
_LVM_GETNUMBEROFWORKAREAS=0x1049  
_LVM_GETORIGIN=0x1029  
_LVM_GETOUTLINECOLOR=0x10B0  
_LVM_GETSELECTEDCOLUMN=0x10AE  
_LVM_GETSELECTEDCOUNT=0x1032  
_LVM_GETSELECTIONMARK=0x1042  
_LVM_GETSTRINGWIDTH=0x1011  
_LVM_GETSUBITEMRECT=0x1038  
_LVM_GETTEXTBKCOLOR=0x1025  
_LVM_GETTEXTCOLOR=0x1023  
_LVM_GETTILEINFO=0x10A5  
_LVM_GETTILEVIEWINFO=0x10A3  
_LVM_GETTOOLTIPS=0x104E  
_LVM_GETTOPINDEX=0x1027  
_LVM_GETUNICODEFORMAT=0x2006  
_LVM_GETVIEW=0x108F  
_LVM_GETVIEWRECT=0x1022  
_LVM_GETWORKAREAS=0x1046  
_LVM_HASGROUP=0x10A1  
_LVM_HITTEST=0x1012  
_LVM_INSERTCOLUMN=0x1061  
_LVM_INSERTGROUP=0x1091  
_LVM_INSERTGROUPSORTED=0x109F  
_LVM_INSERTITEM=0x104D  
_LVM_INSERTMARKHITTEST=0x10A8  
_LVM_ISGROUPVIEWENABLED=0x10AF  
_LVM_ISITEMVISIBLE=0x10B6  
_LVM_MAPIDTOINDEX=0x10B5  
_LVM_MAPINDEXTOID=0x10B4  
_LVM_MOVEGROUP=0x1097  
_LVM_MOVEITEMTOGROUP=0x109A  
_LVM_REDRAWITEMS=0x1015  
_LVM_REMOVEALLGROUPS=0x10A0  
_LVM_REMOVEGROUP=0x1096  
_LVM_SCROLL=0x1014  
_LVM_SETBKCOLOR=0x1001  
_LVM_SETBKIMAGE=0x1044  
_LVM_SETCALLBACKMASK=0x100B  
_LVM_SETCOLUMN=0x101A  
_LVM_SETCOLUMNORDERARRAY=0x103A  
_LVM_SETCOLUMNWIDTH=0x101E  
_LVM_SETGROUPINFO=0x1093  
_LVM_SETGROUPMETRICS=0x109B  
_LVM_SETHOTCURSOR=0x103E  
_LVM_SETHOTITEM=0x103C  
_LVM_SETHOVERTIME=0x1047  
_LVM_SETICONSPACING=0x1035  
_LVM_SETIMAGELIST=0x1003  
_LVM_SETINFOTIP=0x10AD  
_LVM_SETINSERTMARK=0x10A6  
_LVM_SETINSERTMARKCOLOR=0x10AA  
_LVM_SETITEMCOUNT=0x102F  
_LVM_SETITEMINDEXSTATE=0x10D2  
_LVM_SETITEMPOSITION=0x100F  
_LVM_SETITEMPOSITION32=0x1031  
_LVM_SETITEMSTATE=0x102B  
_LVM_SETITEMTEXT=0x1074  
_LVM_SETITEMW=0x104C  
_LVM_SETOUTLINECOLOR=0x10B1  
_LVM_SETSELECTEDCOLUMN=0x108C  
_LVM_SETSELECTIONMARK=0x1043  
_LVM_SETTEXTBKCOLOR=0x1026  
_LVM_SETTEXTCOLOR=0x1024  
_LVM_SETTILEINFO=0x10A4  
_LVM_SETTILEVIEWINFO=0x10A2  
_LVM_SETTOOLTIPS=0x104A  
_LVM_SETUNICODEFORMAT=0x2005  
_LVM_SETVIEW=0x108E  
_LVM_SETWORKAREAS=0x1041  
_LVM_SORTGROUPS=0x109E  
_LVM_SORTITEMS=0x1030  
_LVM_SORTITEMSEX=0x1051  
_LVM_SUBITEMHITTEST=0x1039  
_LVM_UPDATE=0x102A  
_LVNI_ABOVE=0x100  
_LVNI_ALL=0x0  
_LVNI_BELOW=0x200  
_LVNI_CUT=4  
_LVNI_DIRECTIONMASK=0xF00  
_LVNI_DROPHILITED=8  
_LVNI_FOCUSED=1  
_LVNI_PREVIOUS=0x20  
_LVNI_SAMEGROUPONLY=0x80  
_LVNI_SELECTED=2  
_LVNI_STATEMASK=0xF  
_LVNI_TOLEFT=0x400  
_LVNI_TORIGHT=0x800  
_LVNI_VISIBLEONLY=0x40  
_LVNI_VISIBLEORDER=0x10  
_LVN_BEGINDRAG=0xFFFFFF93  
_LVN_BEGINLABELEDIT=0xFFFFFF97  
_LVN_BEGINLABELEDITW=0xFFFFFF51  
_LVN_BEGINRDRAG=0xFFFFFF91  
_LVN_COLUMNCLICK=0xFFFFFF94  
_LVN_COLUMNDROPDOWN=0xFFFFFF5C  
_LVN_COLUMNOVERFLOWCLICK=0xFFFFFF5A  
_LVN_DELETEALLITEMS=0xFFFFFF98  
_LVN_DELETEITEM=0xFFFFFF99  
_LVN_ENDLABELEDIT=0xFFFFFF96  
_LVN_ENDLABELEDITW=0xFFFFFF50  
_LVN_FIRST=0xFFFFFF9C  
_LVN_GETDISPINFOW=0xFFFFFF4F  
_LVN_HOTTRACK=0xFFFFFF87  
_LVN_INSERTITEM=0xFFFFFF9A  
_LVN_ITEMACTIVATE=0xFFFFFF8E  
_LVN_ITEMCHANGED=0xFFFFFF9B  
_LVN_ITEMCHANGING=0xFFFFFF9C  
_LVN_KEYDOWN=0xFFFFFF65  
_LVN_LAST=FFFFFF39  
_LVN_MARQUEEBEGIN=0xFFFFFF64  
_LVN_ODCACHEHINT=0xFFFFFF8F  
_LVN_ODFINDITEM=0xFFFFFF68  
_LVN_ODSTATECHANGED=0xFFFFFF8D  
_LVN_SETDISPINFO=0xFFFFFF69  
_LVN_SETDISPINFOW=0xFFFFFF4E  
_LVSIL_GROUPHEADER=3  
_LVSIL_NORMAL=0  
_LVSIL_SMALL=1  
_LVSIL_STATE=2  
_LVS_ALIGNLEFT=0x800  
_LVS_ALIGNMASK=0xC00  
_LVS_ALIGNTOP=0x0  
_LVS_AUTOARRANGE=0x100  
_LVS_EDITLABELS=0x200  
_LVS_EX_AUTOAUTOARRANGE=0x1000000  
_LVS_EX_AUTOCHECKSELECT=0x8000000  
_LVS_EX_AUTOSIZECOLUMNS=0x10000000  
_LVS_EX_BORDERSELECT=0x8000  
_LVS_EX_CHECKBOXES=4  
_LVS_EX_COLUMNOVERFLOW=0x80000000  
_LVS_EX_COLUMNSNAPPOINTS=0x40000000  
_LVS_EX_DOUBLEBUFFER=0x10000  
_LVS_EX_FLATSB=0x100  
_LVS_EX_FULLROWSELECT=0x20  
_LVS_EX_GRIDLINES=1  
_LVS_EX_HEADERDRAGDROP=0x10  
_LVS_EX_HEADERINALLVIEWS=0x2000000  
_LVS_EX_HIDELABELS=0x20000  
_LVS_EX_INFOTIP=0x400  
_LVS_EX_JUSTIFYCOLUMNS=0x200000  
_LVS_EX_LABELTIP=0x4000  
_LVS_EX_MULTIWORKAREAS=0x2000  
_LVS_EX_ONECLICKACTIVATE=0x40  
_LVS_EX_REGIONAL=0x200  
_LVS_EX_SIMPLESELECT=0x100000  
_LVS_EX_SINGLEROW=0x40000  
_LVS_EX_SNAPTOGRID=0x80000  
_LVS_EX_SUBITEMIMAGES=2  
_LVS_EX_TRACKSELECT=8  
_LVS_EX_TRANSPARENTBKGND=0x400000  
_LVS_EX_TRANSPARENTSHADOWTEXT=0x800000  
_LVS_EX_TWOCLICKACTIVATE=0x80  
_LVS_EX_UNDERLINECOLD=0x1000  
_LVS_EX_UNDERLINEHOT=0x800  
_LVS_ICON=0x0  
_LVS_LIST=3  
_LVS_NOCOLUMNHEADER=0x4000  
_LVS_NOLABELWRAP=0x80  
_LVS_NOSCROLL=0x2000  
_LVS_NOSORTHEADER=0x8000  
_LVS_OWNERDATA=0x1000  
_LVS_OWNERDRAWFIXED=0x400  
_LVS_REPORT=1  
_LVS_SHAREIMAGELISTS=0x40  
_LVS_SHOWSELALWAYS=8  
_LVS_SINGLESEL=4  
_LVS_SMALLICON=2  
_LVS_SORTASCENDING=0x10  
_LVS_SORTDESCENDING=0x20  
_LVS_TYPEMASK=3  
_LVS_TYPESTYLEMASK=0xFC00  
_LVTVIF_AUTOSIZE=0x0  
_LVTVIF_EXTENDED=4  
_LVTVIF_FIXEDHEIGHT=2  
_LVTVIF_FIXEDSIZE=3  
_LVTVIF_FIXEDWIDTH=1  
_LVTVIM_COLUMNS=2  
_LVTVIM_LABELMARGIN=4  
_LVTVIM_TILESIZE=1  
