# win.ui.ctrl.splitter 库模块帮助文档

<details>  <summary>用法说明</summary>  <p>

要点：

1. 使用控件的 split 函数拆分多个控件。

	例如:

		winform.splitter1.split( winform.edit1,winform.edit2 )  

	参数也可以是控件数组，每个控件数组必须包含位于拆分条同一侧的控件。

	例如:

		winform.splitter1.split( winform.edit1,{ winform.edit2,winform.edit3} )  

2. 在调整窗口大小时，拆分条会负责让被拆分的控件吸附在自己的两侧。

	但是被拆分控件以及拆分条本身的其他固定边距属性、自适应大小属性应当自行根据需要设置。

</p></details>

[教程 - 使用拆分控件](https://www.aardio.com/zh-cn/doc/library-guide/std/win/ui/ctrl/splitter.html) [范例 - 使用拆分条](https://www.aardio.com/zh-cn/doc/example/Windows/Controls/splitter.html) [范例 - 自缩放编辑框](https://www.aardio.com/zh-cn/doc/example/Windows/edit/onOk.html)

## win.ui.ctrl 成员列表 <a id="win.ui.ctrl" href="#win.ui.ctrl">&#x23;</a>

### win.ui.ctrl.splitter <a id="win.ui.ctrl.splitter" href="#win.ui.ctrl.splitter">&#x23;</a>
拆分条控件支持库

### win.ui.ctrl.splitter() <a id="win.ui.ctrl.splitter" href="#win.ui.ctrl.splitter">&#x23;</a>
拆分条控件  

[返回对象:splitterObject](#splitterObject)

## splitterObject 成员列表 <a id="splitterObject" href="#splitterObject">&#x23;</a>

### splitterObject._parentForm <a id="splitterObject._parentForm" href="#splitterObject._parentForm">&#x23;</a>
返回创建控件的容器窗口（win.form对象），所有窗口控件都拥有此只读属性。  
对于使用窗体设计器创建的窗口，也就是返回设计时窗体容器。  

即使子窗口移除子窗口样式、更改父子关系，或以 orphanWindow显示，  
控件的 _parentForm 始终都不会改变  

[返回对象:winform](https://www.aardio.com/zh-cn/doc/library-reference/win/ui/_.html#winform)

### splitterObject.adjust <a id="splitterObject.adjust" href="#splitterObject.adjust">&#x23;</a>

```aardio
splitterObject.adjust = function( cx,cy,wParam ) {	   

};
```

### splitterObject.adjust() <a id="splitterObject.adjust" href="#splitterObject.adjust">&#x23;</a>
调整窗口 - 自定义事件函数

### splitterObject.bottom <a id="splitterObject.bottom" href="#splitterObject.bottom">&#x23;</a>
底部坐标

### splitterObject.capture <a id="splitterObject.capture" href="#splitterObject.capture">&#x23;</a>
是否捕获全局鼠标消息

### splitterObject.className <a id="splitterObject.className" href="#splitterObject.className">&#x23;</a>
运行时类名

### splitterObject.close() <a id="splitterObject.close" href="#splitterObject.close">&#x23;</a>
关闭控件窗口

### splitterObject.cls <a id="splitterObject.cls" href="#splitterObject.cls">&#x23;</a>
设计时类名

### splitterObject.disabled <a id="splitterObject.disabled" href="#splitterObject.disabled">&#x23;</a>
是否禁用

### splitterObject.getClientRect() <a id="splitterObject.getClientRect" href="#splitterObject.getClientRect">&#x23;</a>
控件客户区块位置(::RECT结构体)  

[返回对象:rectObject](https://www.aardio.com/zh-cn/doc/library-reference/global/_.html#rectObject)

### splitterObject.getParent() <a id="splitterObject.getParent" href="#splitterObject.getParent">&#x23;</a>
返回父窗口  

[返回对象:splitterObject](#splitterObject)

### splitterObject.getPos() <a id="splitterObject.getPos" href="#splitterObject.getPos">&#x23;</a>
返回相对坐标,宽,高  
x,y,cx,cy=win.getPos(hwnd)

### splitterObject.getRect() <a id="splitterObject.getRect" href="#splitterObject.getRect">&#x23;</a>
控件区块位置(::RECT结构体)

### splitterObject.getRect(true) <a id="splitterObject.getRect" href="#splitterObject.getRect">&#x23;</a>
控件屏幕区块位置(::RECT结构体)

### splitterObject.height <a id="splitterObject.height" href="#splitterObject.height">&#x23;</a>
高度

### splitterObject.hide <a id="splitterObject.hide" href="#splitterObject.hide">&#x23;</a>
控件是否隐藏

### splitterObject.horz <a id="splitterObject.horz" href="#splitterObject.horz">&#x23;</a>
是否水平拆分条

### splitterObject.hwnd <a id="splitterObject.hwnd" href="#splitterObject.hwnd">&#x23;</a>
控件句柄

### splitterObject.id <a id="splitterObject.id" href="#splitterObject.id">&#x23;</a>
控件ID

### splitterObject.invalidate(/*可选使用::RECT()对象指定客户区*/) <a id="splitterObject.invalidate(/*可选使用::RECT" href="#splitterObject.invalidate(/*可选使用::RECT">&#x23;</a>
使窗口绘图区无效

### splitterObject.invalidate(/*可选使用::RECT()对象指定客户区*/,0) <a id="splitterObject.invalidate(/*可选使用::RECT" href="#splitterObject.invalidate(/*可选使用::RECT">&#x23;</a>
使窗口绘图区无效  
不刷新背景

### splitterObject.left <a id="splitterObject.left" href="#splitterObject.left">&#x23;</a>
左侧坐标

### splitterObject.ltControl <a id="splitterObject.ltControl" href="#splitterObject.ltControl">&#x23;</a>
拆分条左边或上边的控件。  
可以是控件对象，也可以是包含控件的数组。  
只能调用 split 函数修改此属性。  

[返回对象:staticObject](https://www.aardio.com/zh-cn/doc/library-reference/win/ui/ctrl/static.html#staticObject)

### splitterObject.ltMin <a id="splitterObject.ltMin" href="#splitterObject.ltMin">&#x23;</a>
前面的控件最小尺寸，应指定 DPI 缩放与窗体缩放前的设计时大小。  
这个属性只会限制拖动拆分条、split、splitMove 函数。  
窗口调整大小时按预设缩放规则调整，不检查 ltMin 属性。

### splitterObject.modifyStyle(remove,add,swpFlags) <a id="splitterObject.modifyStyle" href="#splitterObject.modifyStyle">&#x23;</a>
修改窗口样式,所有参数都是可选参数,  
@remove 用数值指定要移除的样式,可使用 _WS_ 前缀的常量  
@add 用数值指定要添加的样式,可使用 _WS_ 前缀的常量  
@swpFlags 可选用数值指定调整窗口选项,可使用 _SWP_ 前缀的常量  
如果指定了 @swpFlag ,则使用该参数调用::SetWindowPos  
细节请参考 win.modifyStyle 函数源码

### splitterObject.modifyStyleEx(remove,add,swpFlags) <a id="splitterObject.modifyStyleEx" href="#splitterObject.modifyStyleEx">&#x23;</a>
修改窗口扩展样式,所有参数都是可选参数,  
@remove 用数值指定要移除的样式,可使用 _WS_EX_ 前缀的常量  
@add 用数值指定要添加的样式,可使用 _WS_EX_ 前缀的常量  
@swpFlags 可选用数值指定调整窗口选项,可使用 _SWP_ 前缀的常量  
如果指定了 @swpFlag ,则使用该参数调用::SetWindowPos  
细节请参考 win.modifyStyle 函数源码

### splitterObject.postMessage(msg,wParam,lParam) <a id="splitterObject.postMessage" href="#splitterObject.postMessage">&#x23;</a>
投递窗口消息到消息队列中  
此函数用法请参考 ::User32.PostMessage

### splitterObject.rbControl <a id="splitterObject.rbControl" href="#splitterObject.rbControl">&#x23;</a>
拆分条右边或下边的控件。  
可以是控件对象，也可以是包含控件的数组。  
只能调用 split 函数修改此属性。  

[返回对象:staticObject](https://www.aardio.com/zh-cn/doc/library-reference/win/ui/ctrl/static.html#staticObject)

### splitterObject.rbMin <a id="splitterObject.rbMin" href="#splitterObject.rbMin">&#x23;</a>
后面的控件最小尺寸，应指定 DPI 缩放与窗体缩放前的设计时大小。  
这个属性只会限制拖动拆分条、split、splitMove 函数。  
窗口调整大小时按预设缩放规则调整，不检查 rbMin 属性。

### splitterObject.redraw() <a id="splitterObject.redraw" href="#splitterObject.redraw">&#x23;</a>
刷新

### splitterObject.redrawTransparent() <a id="splitterObject.redrawTransparent" href="#splitterObject.redrawTransparent">&#x23;</a>
刷新  
透明背景时请使用此函数替代redraw()

### splitterObject.right <a id="splitterObject.right" href="#splitterObject.right">&#x23;</a>
右侧坐标

### splitterObject.sendMessage(msg,wParam,lParam) <a id="splitterObject.sendMessage" href="#splitterObject.sendMessage">&#x23;</a>
发送窗口消息  
此函数用法请参考 ::User32.SendMessage

### splitterObject.setParent(控件对象) <a id="splitterObject.setParent" href="#splitterObject.setParent">&#x23;</a>
改变父窗口

### splitterObject.setPos(x坐标,y坐标,宽,高,插入位置,参数) <a id="splitterObject.setPos" href="#splitterObject.setPos">&#x23;</a>
调整窗口位置或排序,所有参数可选  
同时指定x,y坐标则移动位置  
同时指定宽高则改变大小  
指定插入位置(句柄或_HWND前缀常量)则调整Z序

### splitterObject.setRect(rc) <a id="splitterObject.setRect" href="#splitterObject.setRect">&#x23;</a>
设置控件区块位置(::RECT结构体)

### splitterObject.setRect(rc,true) <a id="splitterObject.setRect" href="#splitterObject.setRect">&#x23;</a>
设置控件屏幕区块位置(::RECT结构体)

### splitterObject.show(true) <a id="splitterObject.show" href="#splitterObject.show">&#x23;</a>
显示控件

### splitterObject.split <a id="splitterObject.split" href="#splitterObject.split">&#x23;</a>
指定需要拆分的控件。

### splitterObject.split(前面的控件,后面的控件) <a id="splitterObject.split" href="#splitterObject.split">&#x23;</a>
指定需要拆分的控件。  
参数可以是控件对象，也可以是包含控件对象的数组。  
同一数组中的控件必须位于拆分条的同一侧。  

调整窗口大小时拆分条会自动吸附数组参数中的第一个控件。  
被折分的控件可在控件属性中指定是否支持自动调整大小（创建控件参数表中的`ah`,`aw`字段）。  
要特别注意拆分条本身应正确设置固定边距属性，  
否则窗体缩放后拆分条与被拆分的控件相对位置变化过大，  
拆分条就会因为无法保持吸附又保持同侧多控件相对位置而导致布局错乱。  

也可以将更多控件可放入子窗口并以 custom 控件作为容器，然后再拆分单个容器控件。

### splitterObject.splitAt(拆分位置) <a id="splitterObject.splitAt" href="#splitterObject.splitAt">&#x23;</a>
在指定的位置拆分。  
水平拆分条参数指定窗口上边距，垂直拆分条则参数指定的是窗口左边距。  
参数应当指定 DPI 缩放以前的值，函数会自动缩放。

### splitterObject.splitMove(相对移动距离) <a id="splitterObject.splitMove" href="#splitterObject.splitMove">&#x23;</a>
移动拆分条到相对于当前位置的指定距离，  
并在新位置拆分绑定的窗口。  
参数必须指定 DPI 缩放前的距离。

### splitterObject.text <a id="splitterObject.text" href="#splitterObject.text">&#x23;</a>
控件文本

### splitterObject.theme <a id="splitterObject.theme" href="#splitterObject.theme">&#x23;</a>
外观主题,例如  
winform.button.theme = "Explorer"  
winform.button.theme = false

### splitterObject.top <a id="splitterObject.top" href="#splitterObject.top">&#x23;</a>
顶部坐标

### splitterObject.translateAccelerator <a id="splitterObject.translateAccelerator" href="#splitterObject.translateAccelerator">&#x23;</a>

```aardio
splitterObject.translateAccelerator = function(msg){   
	/*返回是否快捷键*/  
}
```

### splitterObject.update() <a id="splitterObject.update" href="#splitterObject.update">&#x23;</a>
重绘invalidate函数指定的区块

### splitterObject.width <a id="splitterObject.width" href="#splitterObject.width">&#x23;</a>
宽度

## splitterObject 事件列表 <a id="splitterObjectEvent" href="#splitterObjectEvent">&#x23;</a>

### splitterObject.onSplitterMoved <a id="splitterObject.onSplitterMoved" href="#splitterObject.onSplitterMoved">&#x23;</a>

```aardio
splitterObject.onSplitterMoved = function(l,t,r,b){
	/*拆分条已被用户手动拖拽移动到新位置，l,r,r,b 分别为左上右下坐标。  
调用 splitAt,splitMove 函数修改位置不会回调此函数。  
窗体缩放时自动调整位置不会回调此函数。*/
}
```

