マリオネット・スクリプト解説講座

新着記事第64回「リストブラウザ その2」

FundamentalsArchitectLandmarkSpotlightDesigner2025

前回に引き続き、リストブラウザを使用したカスタムダイアログを解説します。その2では、ラジオボタンや塗りつぶしなど特殊なアイテムの設定方法を紹介します。

64-1. 3状態ラジオボタンの作成

オーガナイザ等で使用されている、クラスやレイヤの表示/非表示/グレー表示を切り替えるボタンを再現してみましょう。

まずは、前回の記事を参考に、空のリストブラウザを作成します。

PROCEDURE CustomDialog;
CONST
    kOK = 1;
    kCancel = 2;
    kLB = 3;
VAR
    dialogID, result : longint;

    { コールバック関数 }
    PROCEDURE CallBack( VAR item:LONGINT; data:LONGINT );
    VAR
        boo : BOOLEAN;
        col,row, ii : integer;
    BEGIN
        CASE item OF
            SetupDialogC : 
            BEGIN

            END;

            kOK : 
            BEGIN

            END;
        END;
    END;

BEGIN
    { カスタムダイアログの作成 }
    dialogID := CreateLayout( 'カスタムダイアログ',  False, 'OK', 'キャンセル' );

    { アイテムの作成 }
    CreateLB(dialogID, kLB, 30, 15);

    { アイテムのレイアウト }
    SetFirstLayoutItem(dialogID, kLB);
    { 実行 }
    result := RunLayoutDialogN( dialogID, CallBack, False );
END;
RUN( CustomDialog );

それでは1列目(0番目の列)に表示/非表示/グレー表示のラジオボタンを作っていきます。カスタムダイアログの初期化イベント(SetupDialogC/12255)で、列のフォーマットを行います。

col := InsertLBColumn(dialogID, kLB, 0, '表示設定', 50);
boo := SetLBItemDisplayType(dialogID, kLB, 0, 1);
boo := SetLBControlType(dialogID, kLB, 0, 2);
EnableLBRadioColumnLines( dialogID, kLB, 0, True );

ここでのキモはSetLBControlTypeのcontrolTypeを2番のラジオに設定することです。

次に、表示/非表示/グレー表示の状態を表す画像をそれぞれ用意します。Vectorworksのリソースから探してみてください。

    • 表示
    • 非表示
    • グレー表示

リストブラウザで使用する画像として登録をして、

iconShowRes := AddListBrowserImage( dialogID, kLB, 'Vectorworks/Standard Images/Visible.png' );
iconHideRes := AddListBrowserImage( dialogID, kLB, 'Vectorworks/Standard Images/Invisible.png' );
iconGrayRes := AddListBrowserImage( dialogID, kLB, 'Vectorworks/Standard Images/Gray.png' );

1列目のラジオボタンで使用するように定義します。InsertLBColumnDataItemで定義した順番で左から順に表示されます。

ii := InsertLBColumnDataItem( dialogID, kLB, 0, '0', iconShowRes, -1, 0 );
ii := InsertLBColumnDataItem( dialogID, kLB, 0, '1', iconHideRes, -1, 0 );
ii := InsertLBColumnDataItem( dialogID, kLB, 0, '2', iconGrayRes, -1, 0 );

行を3つ挿入して、それぞれ表示/非表示/グレー表示の初期値を設定します。

row := InsertLBItem(dialogID, kLB, 0, '');
boo := SetLBItemUsingColumnDataItem( dialogID, kLB, row, 0, iconShowRes );

row := InsertLBItem(dialogID, kLB, 1, '');
boo := SetLBItemUsingColumnDataItem( dialogID, kLB, row, 0, iconHideRes );

row := InsertLBItem(dialogID, kLB, 2, '');
boo := SetLBItemUsingColumnDataItem( dialogID, kLB, row, 0, iconGrayRes );

実行すると、表示/非表示/グレー表示のラジオボタンがリストブラウザに表示されます。

ラジオボタン部分をクリックすると表示を切り替えることができます。

64-2. 塗りつぶしの設定

リストブラウザのセルに塗りつぶしを設定して、カラーボックスのように使用することもできます。2列目に塗りつぶしを設定していきます。

初期化イベントで、次の通り列のフォーマットを行います。

col := InsertLBColumn(dialogID, kLB, 1, '塗りつぶし', 80);
boo := SetLBItemDisplayType(dialogID, kLB, 1, 1);

具体的な塗りつぶしの設定は、行を追加したあとにSetLBColumnOwnerDrawnTypeを使用して行います。

boo := SetLBColumnOwnerDrawnType(dialogID, kLB, row, 1, 1);

四角形の塗りつぶしの場合はSetLBColumnOwnerDrawnTypeのownerDrawnType1番に設定します。

準備ができたらSetLBItemFillForeColorを使用して塗りつぶしの色をセルごとに指定します。背景色、前景色にRed,Green,Blueの値を0~255で指定します。

boo := SetLBColumnOwnerDrawnType(dialogID, kLB, 0, 1, 1);
boo := SetLBItemFillForeColor(dialogID, kLB, 0, 1, 255, 0, 0);
boo := SetLBItemFillBackColor(dialogID, kLB, 0, 1, 255, 0, 0);

boo := SetLBColumnOwnerDrawnType(dialogID, kLB, 1, 1, 1);
boo := SetLBItemFillForeColor(dialogID, kLB, 1, 1, 0, 255, 0);
boo := SetLBItemFillBackColor(dialogID, kLB, 1, 1, 0, 255, 0);

boo := SetLBColumnOwnerDrawnType(dialogID, kLB, 2, 1, 1);
boo := SetLBItemFillForeColor(dialogID, kLB, 2, 1, 0, 0, 255);
boo := SetLBItemFillBackColor(dialogID, kLB, 2, 1, 0, 0, 255);

実行すると指定した色の塗りつぶしが表示されます。

64-3. ラインタイプの表示

SetLBColumnOwnerDrawnTypeのownerDrawnTypeを変更することで、塗り潰し以外の表現が可能です。ownerDrawnTypeの8番はラインタイプを表示します。

3列目を追加して、

col := InsertLBColumn(dialogID, kLB, 2, 'ラインタイプ', 120);
boo := SetLBItemDisplayType(dialogID, kLB, 2, 1);

SetLBItemLineTypeを使用して表示するラインタイプを指定します。

boo := SetLBColumnOwnerDrawnType(dialogID, kLB, 0, 2, 8);
boo := SetLBItemLineType(dialogID, kLB, 0, 2, Name2Index('ISO-02 破線'), 10 );

boo := SetLBColumnOwnerDrawnType(dialogID, kLB, 1, 2, 8);
boo := SetLBItemLineType(dialogID, kLB, 1, 2, Name2Index('ISO-07 点線'), 10 );

boo := SetLBColumnOwnerDrawnType(dialogID, kLB, 2, 2, 8);
boo := SetLBItemLineType(dialogID, kLB, 2, 2, Name2Index('ISO-08 一点鎖線'), 10 );

実行するとリストブラウザにラインタイプが表示されます。

他にも模様やグラデーションが表示できますので、ぜひ試してみてください。

この機能を利用できる製品

Fundamentals

Vectorworks Fundamentals

2D/3D汎用作図機能に、プレゼンボード作成機能や図面と連動できる表計算機能など、数多くの基本作図機能に加え、高品質レンダリング&3Dビジュアライズ機能を搭載したVectorworksシリーズの基本製品
詳細情報 購入ページ

Architect

Vectorworks Architect

建築設計や内装、ディスプレイデザインに対応した先進的なBIM・インテリア設計支援機能、拡張機能、さらには豊富な建築向けのデータライブラリを搭載した建築/内装業界向け製品
詳細情報 購入ページ

Landmark

Vectorworks Landmark

地形モデルや多彩な植栽、灌水設備計画等に対応するランドスケープデザイン機能、さらには豊富な造園向けのデータライブラリを搭載した都市計画/造園業界向け製品
詳細情報 購入ページ

Spotlight

Vectorworks Spotlight

ステージプランニングやライティング計画に対応した先進的な舞台照明計画支援機能、さらには各種メーカー製のトラスや照明機材、音響機器等の豊富なデータライブラリを搭載したエンタテインメント業界向け製品
詳細情報 購入ページ

Designer

Vectorworks Design Suite

専門分野別(建築設計/ディスプレイデザイン、ランドスケープデザイン、ステージデザイン&スポットライトプランニング)の設計支援機能、拡張機能、さらには豊富なデータライブラリを搭載した最上位の製品
詳細情報 購入ページ