Wide Studio Programmer's Guide

Wide Studio Home
Up to


ツリーリスト



メソッドによるリストのデータ表示制御

ツリーリスト(WSCtreeList)または、WSClist のリスト種別を ツリーリストに設定したものに項目表示データを追加するには、 リストの場合と全く同じように addItem メソッドを用います。 addItem により、追加する文字列、追加する位置を指定します。 追加位置を省略すると、リストの末尾に追加されます。 また、リスト項目のネスト階層は、setItemValue メソッドで 設定することができます。 引数には、設定したい項目の位置、値種別に WS_INDENT_LEVEL、 そして階層を指定します。 何も設定しない場合は第0階層となり、最上位の状態になります。
  setItemValue(pos,WS_INDENT_LEVEL,level);
  pos = 0,1,2,...,-1(最後尾)
  level = 0(top),1,2,3...



[ツリーリスト]

図の様にツリーリストに項目を追加するサンプルです。
#include <WScom.h>
#include <WSCfunctionList.h>
#include <WSCbase.h>
//----------------------------------------------------------
//Function for the event procedure
//----------------------------------------------------------
#include <WSCtreeList.h>
extern WSCtreeList* newlist_001;
void btnep1(WSCbase* object){
  //リストの項目を全て削除。
  newlist_001->delAll();
  //リストの末尾に項目を追加。
  newlist_001->addItem("item1");
  newlist_001->setItemValue(-1,WS_INDENT_LEVEL,0);
  newlist_001->addItem("item2");
  newlist_001->setItemValue(-1,WS_INDENT_LEVEL,1);
  newlist_001->addItem("item3");
  newlist_001->setItemValue(-1,WS_INDENT_LEVEL,2);
  newlist_001->addItem("item4");
  newlist_001->setItemValue(-1,WS_INDENT_LEVEL,3);
  newlist_001->addItem("item5");
  newlist_001->setItemValue(-1,WS_INDENT_LEVEL,0);
  newlist_001->addItem("item6");
  newlist_001->setItemValue(-1,WS_INDENT_LEVEL,1);

  //リストを変更した場合、最後に一度、更新。
  newlist_001->updateList();
}
static WSCfunctionRegister  op("btnep1",(void*)btnep1);
ツリーリストにおいて、注意すべき点は、 項目間には親子関係のような特別な関係が全く無く、 単なるリスト表示に対して、 各項目がインデントを指定された状態で表示されると言うことです。 したがって、最上位の項目を削除したからといって、 それ以降の階層の項目が無くなるといったことはありません。 また、前項目とのインデントの差は、+1 までです。 +1 以上差がある場合は、自動的に +1 となるように補正されますので ご注意ください。

プロパティからのツリーリストデータの設定

比較的項目数が少ない場合、プロパティから、 一括して項目を設定することができます。 この場合、まず、WSNdataSource プロパティを WS_DATA_SOURCE_NONE に 指定します。次に、WSNdata プロパティに下記に示すような書式で 設定します。
  データ書式:(プロパティ WSNuseIcon が True の場合)
    icon_filename,indent_level,1=open/0=close,項目文字列\n...
  データ書式:(プロパティ WSNuseIcon が False の場合)
    indent_level,1=open/0=close,項目文字列\n...
アイコン指定において、アイコンを省略した場合、 プロパティ WSNiconPixmap で指定したアイコンが用いられます。
#include <WScom.h>
#include <WSCfunctionList.h>
#include <WSCbase.h>
//----------------------------------------------------------
//Function for the event procedure
//----------------------------------------------------------
#include <WSCtreeList.h>
extern WSCtreeList* newlist_001;
void btnep1(WSCbase* object){
  //リストの項目を全て削除。
  newlist_001->delAll();
  //リストにプロパティ経由でデータを設定
  newlist_001->setProperty(WSNdataSource,WS_DATA_SOURCE_NONE);
  newlist_001->setProeprty(WSNdata,",0,1,item1\n,1,1,item2\n,2,1,item3");

static WSCfunctionRegister  op("btnep1",(void*)btnep1);


ファイルからのツリーリストデータの設定

ファイル名を指定して、ファイルから一括して項目を設定することができます。 この場合、まず、WSNdataSource プロパティを WS_DATA_SOURCE_FILE に 指定します。次に、WSNdataSourceName プロパティにファイル名を指定します。 ビルダーからのプロパティ設定、プログラムからの設定で動作します。 下記はプログラムでの設定の例です。
#include <WScom.h>
#include <WSCfunctionList.h>
#include <WSCbase.h>
//----------------------------------------------------------
//Function for the event procedure
//----------------------------------------------------------
#include <WSCtreeList.h>
extern WSCtreeList* newlist_001;
void btnep1(WSCbase* object){
  //リストの項目を全て削除。
  newlist_001->delAll();
  //リストにファイル経由でデータを設定
  newlist_001->setProperty(WSNdataSource,WS_DATA_SOURCE_FILE);
  newlist_001->setProperty(WSNdataSourceName,"data.txt");
}
static WSCfunctionRegister  op("btnep1",(void*)btnep1);

//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



インスタンスからのツリーリストのデータ表示

インスタンス名を指定して、インスタンスから一括して項目を設定することができます。 この場合、まず、WSNdataSource プロパティを WS_DATA_SOURCE_INSTANCE に 指定します。次に、WSNdataSourceName プロパティにインスタンス名を指定します。 下記の例では、WSCtextField のインスタンス newtext_000 を 指定しています。 データの形式は、ファイル指定の場合と変わりません。 newtext_000 に入力されている文字列がリストに表示されます。 ビルダーからのプロパティ設定、プログラムからの設定で動作します。 下記はプログラムでの設定の例です。 この場合、入力フィールドのインスタンス newtext_000 に入力されている文字列が ツリーリストの項目として表示されます。
#include <WScom.h>
#include <WSCfunctionList.h>
#include <WSCbase.h>
//----------------------------------------------------------
//Function for the event procedure
//----------------------------------------------------------
#include <WSCtreeList.h>
extern WSCtreeList* newlist_001;
void btnep1(WSCbase* object){
  //リストの項目を全て削除。
  newlist_001->delAll();
  //リストにファイル経由でデータを設定
  newlist_001->setProperty(WSNdataSource,WS_DATA_SOURCE_INSTANCE);
  newlist_001->setProperty(WSNdataSourceName,"newtext_000");
}
static WSCfunctionRegister  op("btnep1",(void*)btnep1);


Document Release 2.0

For Use with Wide Studio Release 2.0, Spring 2002


Wide Stuido Home | Up to

Copyright(C) S. Hirabayashi, 1999-2002 Last modified: January 1, 2002