Sponsored links

【AutoLISP DCL】レイアウト 空白タイル spacer

Sponsored links
ダイアログボックス
Sponsored links

空白タイル spacer は、ダイアログボックスに空白部分を入れてレイアウトを整えたい時に使います。

Sponsored links

予備知識

コチラの記事にある、6つの文字タイルのダイアログボックスに、空白タイルを加えてレイアウトを変更していきます。

AutoLISP プログラム

以下のAutoLISPプログラムは、タイル A、B、 C、D、E、F に文字列を表示させるものです。

(defun c:test (/ dcl_id Act)

   (setq dcl_id (load_dialog "JagaDCL.dcl")) ;
   
      (if (not (new_dialog "TestDB" dcl_id))
	      (progn
            (princ "***ダイアログボックスが見つかりません***")
            (exit)
      ));if 
  
          ;-----------------------------------------------------------
   
            (set_tile "A" "Tile A" )
            (set_tile "B" "Tile B" )	
            (set_tile "C" "Tile C" )	
            (set_tile "D" "Tile D" )
            (set_tile "E" "Tile E" )
            (set_tile "F" "Tile F" )	
           
          ;-----------------------------------------------------------
            (action_tile "accept" "(done_dialog 1)")
            (action_tile "cancel" "(done_dialog 0)")
          ;-----------------------------------------------------------
            (setq Act (start_dialog))
            (unload_dialog dcl_id)
          ;-----------------------------------------------------------
            (cond 
              ((= Act 0)(princ "キャンセルキーを押しました"))
              ((= Act 1)(princ "OKを押しました"))
            );cond
          ;----------------------------------------------------------				
(princ))

この、AutoLISP用に6つの文字列タイルを表示させるDCLを作ります。

同じAutoLISPプログラムに対して、DCL側でダイアログボックスの見た目を何通りも作ることができます。

今回は、spacer タイルを使ってレイアウトを調整する方法です。

AutoLISPからDCL呼び出すには、DCLを、JagaDCL.dclという名前でサポートファイル検索パスのフォルダ内に保存してください。

spacer タイル

spacer タイルは、ダイアログボックスのレイアウト用に、スペースを追加するタイルです。

これはスペーサーを入れていない場合ですす。
左にコラムに4つのタイル、右に2つのタイルを入れるとこうなります。

TestDB :dialog
      {label = "TITLE"; 
//--------------------------------------------------------  
      :row{ label = "ROW";
          :column{ label = "COLUMN 1";
            :text { key = "A"; } 
            :text { key = "B"; }
            :text { key = "C"; }
            :text { key = "D"; } 
             }
          :column{ label = "COLUMN 2";
            :text { key = "E"; }
            :text { key = "F"; }
             } 
      }   
 //--------------------------------------------------------   
        ok_cancel; 
      } 

:spacer {}


属性を省略して、:spacer { } と入れることもできます。

上の例の右のTileFの後に、:spacer { height = 2;} と空白タイルを入れるとこうなります。

TestDB :dialog
      {label = "TITLE"; 
//--------------------------------------------------------  
      :row{ label = "ROW";
          :column{ label = "COLUMN 1";
            :text { key = "A"; } 
            :text { key = "B"; }
            :text { key = "C"; }
            :text { key = "D"; } 
             }
          :column{ label = "COLUMN 2";
            :text { key = "E"; }
            :text { key = "F"; }
            :spacer { height = 2;}
             } 
      }   
 //--------------------------------------------------------   
        ok_cancel; 
      } 

空白タイルに横幅の属性も付けて、:spacer { height = 2; width = 10;} とした場合です。 

TestDB :dialog
      {label = "TITLE"; 
//--------------------------------------------------------  
      :row{ label = "ROW";
          :column{ label = "COLUMN 1";
            :text { key = "A"; } 
            :text { key = "B"; }
            :text { key = "C"; }
            :text { key = "D"; } 
             }
          :column{ label = "COLUMN 2";
            :text { key = "E"; }
            :text { key = "F"; }
            :spacer { height = 2; width = 10;}
             } 
      }   
 //--------------------------------------------------------   
        ok_cancel; 
      } 

定義されているの空白タイル

空白タイルには、すでに定義されているものがあります。

spacer_0;

height と width が 0 に設定された空白タイルです。

spacer_1;

height と width が 1 に設定された空白タイルです。

まとめ

  • spacerは、レイアウトのための空白タイル
  • height width 属性を使って空白タイルの大きさを調節する。
  • spacer_1; はheight と width が 1 に設定された定義済み空白タイル。
  • spacer_0; はheight と width が 0 に設定された定義済み空白タイル。

関連記事

属性alignmentを使ってレイアウトを変える方法です。