| WideStudio Programming Guide | WideStudio Index Table of contents

> ## 树状列表

> ### 通过函数控制树状列表的数据显示

> 在树状列表 (WSCtreeList)，或者WSClist 的列表类别为[树状列表]的列表中追加项目显示数据时， 同前面介绍的列表情况完全一样，使用addItem 函数指定追加的字符串和追加的位置。 省略追加位置时，将被追加到列表的末尾。同时，可以使用 setItemValue 函数设定列表项目的结构。 在引数中，将设定项目的位置，值别等指定于WS_INDENT_LEVEL，及阶层中。 完全不设定的情况下，将成为第0阶层，成为最初阶层。

>       $obj->setItemValue($pos,$mpfc::WS_INDENT_LEVEL,$level);
>       $pos = 0,1,2,...,-1(末端)
>       $level = 0(top),1,2,3...

> [树状列表]
> 下图是在树状列表中追加项目的范例。

>     #----------------------------------------------------------
>     #Function for the event procedure
>     #----------------------------------------------------------
>     use mpfc;

>     sub btnep1 {
>       my ($object) = @_;
>       # 删除列表的所有项目
>       $newlist_001->delAll();

>       # 从列表末端追加项目
>       $newlist_001->addItem("item1");
>       $newlist_001->setItemValue(-1,$mpfc::WS_INDENT_LEVEL,0);
>       $newlist_001->addItem("item2");
>       $newlist_001->setItemValue(-1,$mpfc::WS_INDENT_LEVEL,1);
>       $newlist_001->addItem("item3");
>       $newlist_001->setItemValue(-1,$mpfc::WS_INDENT_LEVEL,2);
>       $newlist_001->addItem("item4");
>       $newlist_001->setItemValue(-1,$mpfc::WS_INDENT_LEVEL,3);
>       $newlist_001->addItem("item5");
>       $newlist_001->setItemValue(-1,$mpfc::WS_INDENT_LEVEL,0);
>       $newlist_001->addItem("item6");
>       $newlist_001->setItemValue(-1,$mpfc::WS_INDENT_LEVEL,1);

>       # 列表内容变更后，执行刷新
>       $newlist_001->updateList();
>       return;
>     }
>     1;

> 在树状列表中，应该注意的是，在项目间完全没有任何关系，即各项目按指定状态进行显示。 因此，删掉最上层的项目，不会使其以下阶层的项目丢失。同时，跟前项之间的差为+1为止。 如果有+1以上差，将被自动订正为+1。

> ### 通过属性设定树状列表的数据

> 项目数比较少时，能通过属性一次性设定项目内容。 首先，将dataSource 属性设定为WS_DATA_SOURCE_NONE。 然后，用以下格式在data 属性中设定数据。
> 数据格式:(属性 useIcon为True的情况)

>     icon_filename，indent_level,1=open/0=close，项目字符串\n...

> 数据格式:(属性 useIcon为 False 的情况)

>     indent_level,1=open/0=close，项目字符串\n...

> 如果省略图标，属性 iconPixmap 中指定的图标将被作为图标使用。

>     #----------------------------------------------------------
>     #Function for the event procedure
>     #----------------------------------------------------------
>     use mpfc;

>     sub btnep1 {
>       my ($object) = @_;
>       # 删除列表的所有项目
>       $newlist_001->delAll();

>       # 通过属性设置列表内容
>       $newlist_001->setProperty("dataSource",$mpfc::WS_DATA_SOURCE_NONE);
>       $newlist_001->setProperty("data",",0,1,item1\n,1,1,item2\n,2,1,item3");
>       return;
>     }
>     1;

> ### 通过文件设定树状列表数据

> 可以通过指定文件一次性设定项目内容。 首先，将dataSource 属性指定为 WS_DATA_SOURCE_FILE。 然后，在dataSourceName 属性中指定文件名。通过设定属性和程序实现动作。 下列是在程序中的设定的例子。

>     #----------------------------------------------------------
>     #Function for the event procedure
>     #----------------------------------------------------------
>     use mpfc;

>     sub btnep1 {
>       my ($object) = @_;
>       # 删除列表的所有项目
>       $newlist_001->delAll();

>       # 通过文件设置列表内容
>       $newlist_001->setProperty("dataSource",$mpfc::WS_DATA_SOURCE_FILE);
>       $newlist_001->setProperty("dataSourceName","data.txt");
>       return;
>     }
>     1;

>     #data.txt 文件的内容
>     $(WSDIR)/sys/pixmaps/bi16.xpm,0,1,item1
>     1,1,item2
>     2,1,item3
>     3,1,item4
>     $(WSDIR)/sys/pixmaps/bi16.xpm,0,1,item5
>     1,1,item6
>     2,1,item7
>     3,1,item8

> ### 通过Instance显示树状列表的数据

> 通过指定Instance名，从该Instance的数据源对象属性对项目进行总括设定。 首先，将dataSource 属性设定为WS_DATA_SOURCE_INSTANCE。 然后，在dataSourceName 属性中指定Instance名。 下列的例子中，指定了WSCtextField 的Instance（newtext_000）。 数据的形式，与文件指定的情况一样。被输入到newtext_000中的字符串在列表里将被显示。 通过builder的属性设定，程序的设定可以动作。 下列是在程序设定的例子。被输入区域的Instance newtext_000中所输入的字符串将作为树状列表的项目被显示。

>     #----------------------------------------------------------
>     #Function for the event procedure
>     #----------------------------------------------------------
>     use mpfc;

>     sub btnep1 {
>       my ($object) = @_;
>       # 删除列表的所有项目
>       $newlist_001->delAll();

>       # 通过文件设置列表内容
>       $newlist_001->setProperty("dataSource",$mpfc::WS_DATA_SOURCE_INSTANCE);
>       $newlist_001->setProperty("dataSourceName","newtext_000");
>       return;
>     }
>     1;

Document Release 3.70 for WideStudio ver 3.70, May 2004

WideStudio documents index | Table of contents

Copyright(C) WideStudio Development Team, 1999-2004 | Last modified: May 25, 2004