Sponsored links

【AutoLISP DCL】レイアウト タイル位置揃え属性 alignment

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

右寄せ左寄せなど、タイル位置を揃えるための属性 alignment の紹介です。 

Sponsored links

予備知識

この記事で使った6つのタイルをクラスタに分けたダイアログボックスに、さらにalignment属性も使ってレイアウトを変えていきます。

属性 alignment

alignment

属性 alignment は、タイル揃えのための属性です。

column では left (左寄せ)、 centered(中央揃え)、right (右寄せ) 
row では、 top (上寄せ)、 centered(中央揃え)、bottom (下寄せ)

に設定できます。

alignment属性を入れていない場合は、columnはleft (左寄せ)、row では centered(中央揃え)になります。

children_alignment

属性children_alignmentは、クラスタ内のすべてのタイルを揃える属性です。

column では left (左寄せ)、 centered(中央揃え)、right (右寄せ) 
row では、 top (上寄せ)、 centered(中央揃え)、bottom (下寄せ)

に設定できます。

alignment属性を入れていない場合は、columnはleft (左寄せ)、row では centered(中央揃え)になります。

alignment 属性使用例

ダイアログボックスを出すAutoLISPプログラム

ダイアログボックスを呼び出し、6つのタイルに文字を表示させるコマンドです。

(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));defun

以下のDCLファイルはこのAutoLISPから読み込むので、JagaDCL.dclという名前で、サポートファイルの検索パス内フォルダに保存してください。

属性無し

まず、 alignment 属性を付けなかった場合のダイアログボックスです。

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

(alignment属性が目立つように、ダイアログボックスにheight属性も付けています。)

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

属性付き

COLUMN 1 には、それぞれのタイルにalignment属性を付けています。
COLUMN 2 には、それぞれのクラスタにchildren_alignment属性を付けています。

TestDB :dialog
      {label = "TITLE"; 
//--------------------------------------------------------  
       :row{
         :boxed_column{label = "COLUMN 1"; 
          :text { key = "A"; alignment = left;} 
          :text { key = "B"; alignment = centered;}
          :text { key = "C"; alignment = right;}
         }
        
        :boxed_column{ label = "COLUMN 2"; children_alignment = right;
          :text { key = "D"; } 
          :text { key = "E"; }
          :text { key = "F"; }
         } 
       }  
 //--------------------------------------------------------   
        ok_cancel;
      }

ROW 1 には、それぞれのタイルにalignment属性を付けています。
ROW 2 には、それぞれのクラスタにchildren_alignment属性を付けています。

TestDB :dialog
      {label = "TITLE"; height = 20;
//--------------------------------------------------------  
       :column { 
         :boxed_row {label = "ROW 1";
          :text { key = "A"; alignment = top;} 
          :text { key = "B"; alignment = centered;}
          :text { key = "C"; alignment = bottom;}
         }
        
        :boxed_row{ label = "ROW 2"; children_alignment = bottom;
          :text { key = "D"; } 
          :text { key = "E"; }
          :text { key = "F"; }
         } 
       }  
 //--------------------------------------------------------   
        ok_cancel;
      }

まとめ

  • alignment属性では、タイルの位置揃えができる。
  • column では left (左寄せ)、 centered(中央揃え)、right (右寄せ) 
  • row では、 top (上寄せ)、 centered(中央揃え)、bottom (下寄せ)
  • alignment属性無しだと、columnはleft (左寄せ)、row では centered(中央揃え)
  • alignmentはタイルごとの属性。
  • children_alignmentはクラスタの属性でクラスタ内のタイルすべてに適用される。