SSpread

Q1 32
SSpreadでグルーピング表示し、「+」「-」で詳細データ表示を切り替えたい
[内容]
「+」「-」などのマークのクリックにより、グループを折り畳んだり、展開して、
詳細行の表示/非表示を切り替える

A1 32
「+」や「-」のマークをセル表示させ、このマーク(セル)をクリックしたタイミングで、
グループに属する行の表示・非表示を切替えることで、グループを折り畳む、展開するといった
ツリー形式に似た表示をさせることができます。

 [サンプルイメージ]
 

 [サンプルコード]
・・・(略)・・・
SSpread SSpread1 {
    ・・・(略)・・・
    Function OnClicked( e ) {
        /* クリックしたセルの値 */
        var data = "";        
        /* セルの値を格納 */
        var data = GetText(e.Col, e.Row);
        
        if ( data == "+" ) {
            /* "+"の場合は"-"に変更し、
               非表示にしていたデータを表示する */
            SetText(e.Col, e.Row, "-");
            OpenRow(e.Row);
        } else if ( data == "-" ) {
            /* "-"の場合は"+"に変更し、
               表示していたデータを非表示にする */
            SetText(e.Col, e.Row, "+");
            CloseRow(e.Row);
        }
    }

    /****************************************************
        非表示の行を表示状態にする
     ****************************************************/
    Function OpenRow(dataRow){
        
        /* 変数宣言 */
        var i = 0;
        var data = "";
            
        SSpread1.ReDraw = $FALSE;
        
        for (i = dataRow + 1; i <= DataRowCnt; i++) {
            /* アクティブ行を設定 */
            Row = i;
            
            /* 行が非表示に設定されている場合は表示する */
            if(RowHidden == $TRUE){
                RowHidden = $FALSE;
            }else{
                    break;
            }
        }
        
        SSpread1.ReDraw = $TRUE;
        
    }
        
    /****************************************************
        表示行を非表示状態にする
    ****************************************************/
    Function CloseRow(dataRow){            
        
        /* 変数宣言 */
        var i = 0;
        var data = "";
        
        SSpread1.ReDraw = $FALSE;
        
        for (i = dataRow + 1; i <= DataRowCnt; i++) {
            /* 1列目を取得 */
            data = GetText(1, i);
            
            /* 1列目(次のデータ)の値がない場合、
               該当行を非表示に設定する */
            if (data == "" || data == null) {
                Row = i;
                RowHidden = $TRUE;
            } else {
                /* 1列目(次のデータ)の値がある場合、
                   ループ処理を終了とする */
                break;
            }
        }
        
        SSpread1.ReDraw = $TRUE;
    }
}
・・・(略)・・・


選択したセルの値が「-」の場合、グループ内に表示されている行数分のRowHiddenプロパティを$TRUEに変更します。
画面に表示されていたグループのデータは、表示されなくなります。

選択したセルの値が「+」の場合、非表示になっている行のRowHiddenプロパティを$FALSEに変更します。
非表示になっていたグループ内のデータが、画面に表示されます。

実際の挙動については、CRSファイル形式のサンプル
  「SSpreadでのグルーピング表示サンプル (Sspd50_032.zip)」
をご確認ください。

管理番号:Sspd50_032
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser V・Biz/Designer V TIPS集 トップへ