各種部品

Window

Window は他の部品とは違い、例えば梱包の属性を持たないなど、特異性があります。したがって、これを部品とはしないという考えもあります。

属性入出力値(単位)機能
Deiconifyなしアイコン状態・隠れ状態から復帰
Iconifyなしアイコン状態にする
Geometry"WWWxHHH+dX+dY" (ピクセル)サイズおよび位置
MaxSize{H, W} (ピクセル)最大拡大可能サイズ
MinSize{H, W} (ピクセル)最小縮小可能サイズ
OverrideRedirectTrue, FalseTrueの時、枠なしのウインドウ
PositionFrom部品, {dX, dY}(ピクセル)}他の部品から位置を決める
State"normal", "iconic", "withdrawn"ウインドウの状態
Title文字列タイトルバーに書く文字列
Withdrawなしウインドウを隠す

Window の属性

表で属性 Geometry は "幅x高さ+x位置+y位置" という特殊なフォーマットの文字列を要求しますが、関数 ToGeometry を使えば {幅, 高さ, x位置, y位置} から "幅x高さ+x位置+y位置" への変換ができます。

Window にはこれ以外にも特殊な操作が可能です。そのひとつは AdjustWindowGeometry で、Window のサイズを中に梱包された部品の表示に最低必要な大きさに変更するものです。

用法:

 AdjustWindowGeometry[Windowシンボル];

Frame

Frame は Window の中の様々な部品を整列させて収容する枠です。 また、この枠の立体的な表示や枠および背景の着色などもできます。 例えば

 w = Window[];
 f1 =  Frame[w, Relief -> "raised",
   Side -> "left", BorderWidth -> 5];
 b11 = Button[f1, Text -> "Frames",
   Side -> "top", PadX -> 20, PadY -> 10];
 b12 = Button[f1, Text -> "are used",
   Side -> "top", PadX -> 20, PadY -> 10];
 b13 = Button[f1, Text -> "to align",
   Side -> "top", PadX -> 20, PadY -> 10];

 f2 =  Frame[w, Relief -> "ridge",
   Side -> "left", BorderWidth -> 5];
 b21 = Button[f2, Text -> "widgets",
   Side -> "top", PadX -> 20, PadY -> 10];
 b22 = Button[f2, Text -> "in a window.",
   Side -> "top", PadX -> 20, PadY -> 10];

 f3 =  Frame[f2, Relief -> "sunken",  
   Side -> "top", BorderWidth -> 5, 
     PadX -> 10, PadY -> 10];
 b31 = Button[f3, Text -> "Frames",
   Side -> "left", PadX -> 20, PadY -> 10];
 b32 = Button[f3, Text -> "can be nested.",
   Side -> "left", PadX -> 20, PadY -> 10];

のようにしますと、図のような結果になります。この場合枠の形状は Relief と BorderWidth で決まりますが、デフォルトでは BorderWidth -> 0 なので Relief だけでは何も効果はありません。Frame はいくらでも重ねられます。

Frame.jpg

Frame の用例

Button

Button の属性を次の表に列挙します。

属性入出力値(単位)デフォルト機能
ActiveBackgroundマウスカーソルが上にあるときの背景色
ActiveForegroundマウスカーソルが上にあるときの文字色
Bitmap表面にbitmapを表示
Commandボタン押下時に実行する式
DisabledForeground
Foreground"black"文字色
FGForeground の略称
Fontフォント文字フォント
Text文字列ボタン表面の表示文字列
TextVariableシンボルボタン表面の表示文字列を割り当てるシンボル
BorderWidth(BD)ピクセル2境界(立体表示される)の幅
Width文字数ボタンの幅
Relief"flat", "groove", "raised", "ridge", "sunken""raised"枠の立体形状
TextAnchor"c", "n", "ne", "e", "se", "s", "sw", "w", "nw", "center""c"表示テキストを揃える方向
TextPadXピクセル9表示テキストの左右のすき間
TextPadYピクセル3表示テキストの上下のすき間
Flashなしなしボタンを一瞬点滅
Invokeなしなし割り当てられた Command を実行

Buttonの属性

CheckButton

CheckButtonはON/OFFを表わすチェックマーク付のボタンです。 これは Variable -> シンボル で与えられたシンボル(結合変数)に OnValue -> 値 で決められた値が割り当てられると、チェックマークが点灯するようになっています。 それ以外の場合には、たとえその値が OffValue -> 値 で決めた値でなくても、チェックマークは消灯します。 また、結合変数を評価すると、その時点のボタンの状態に応じてOnValue -> 値 または OffValue -> 値 で設定された値を返します。 また、複数の CheckButton が一つの変数を共有する場合は、その評価は最初に定義した CheckButton の状態を返しますが、その変数への値の設定はすべての CheckButton に反映されます。例図は

w = Window[];
 b1 = CheckButton[w, Text -> "Linac/BT OK", 
   Variable :> linac];
 b2 = CheckButton[w, Text -> "LER OK", 
   Variable :> ler];
 b3 = CheckButton[w, Text -> "HER OK", 
   Variable :> her];
 b4 = CheckButton[w, Text -> "Belle OK", 
   Variable :> belle];
 linac = 1;
 ler = 0;
 her = 1;
 belle = 1;

により作成しました。

CheckButton.jpg

図 CheckButtonの用例

属性入出力値(単位)デフォルト機能
ActiveBackgroundマウスカーソルが上にあるときの背景色
ActiveForegroundマウスカーソルが上にあるときの文字色
Bitmapボタン表面にbitmapを表示
Commandボタン押下時に実行する式
DisabledForeground
Foreground(FG)"black"文字色
Fontフォント文字フォント
Text文字列ボタン表面の表示文字列
TextVariableシンボルボタン表面の表示文字列を割り当てるシンボル
BorderWidth(BD)ピクセル2境界(立体表示される)の幅
Width文字数ボタンの幅
Relief"flat", "groove", "raised", "ridge", "sunken""flat"枠の立体形状
Variableシンボル結合変数
OffValue数値0ボタンが OFF の時に返す値
OnValue数値1ボタンを ON に設定する値
TextAnchor"c", "n", "ne", "e", "se", "s", "sw", "w", "nw", "center""c"表示テキストを揃える方向
TextPadXピクセル9表示テキストの左右のすき間
TextPadYピクセル3表示テキストの上下のすき間
Flashなしなしボタンを一瞬点滅
Invokeなしなし割り当てられた Command を実行
Deselectなしなしボタンを OFF にする
Selectなしなしボタンを ON にする
Toggleなしなしボタンの状態を反転する

CheckButtonの属性

RadioButton

RadioButton は他者択一型の選択を行うためのマーク付のボタンです。これは Variable -> シンボル で与えられたシンボル(結合変数)に値が割り当てられると、その値が| Value -> 値 で決められた値に一致する RadioButton のマークが点灯するようになっています。それ以外の場合にはマークは消灯します。また、結合変数を評価すると、その時点のボタンの状態に応じて値を返します。例図は

 w = Window[];
 b1 = RadioButton[w, Text -> "2 ns spacing", 
   Variable :> sb, Value -> 2];
 b2 = RadioButton[w, Text -> "4 ns spacing", 
   Variable :> sb, Value -> 4];
 b3 = RadioButton[w, Text -> "6 ns spacing", 
   Variable :> sb, Value -> 6];
 sb = 2;

で作成しました。

RadioButton.jpg

RadioButtonの用例

属性入出力値(単位)デフォルト機能
ActiveBackgroundマウスカーソルが上にあるときの背景色
ActiveForegroundマウスカーソルが上にあるときの文字色
Bitmapボタン表面にbitmapを表示
Commandボタン押下時に実行する式
DisabledForeground
Foreground(FG)"black"文字色
Fontフォント文字フォント
Text文字列ボタン表面の表示文字列
TextVariableシンボルボタン表面の表示文字列を割り当てるシンボル
BorderWidth(BD)ピクセル2境界(立体表示される)の幅
Width文字数ボタンの幅
Relief"flat", "groove", "raised", "ridge", "sunken""flat"枠の立体形状
Variableシンボル結合変数
Value数値ボタンを ON にする値
TextAnchor"c", "n", "ne", "e", "se", "s", "sw", "w", "nw", "center""c"表示テキストを揃える方向
TextPadXピクセル9表示テキストの左右のすき間
TextPadYピクセル3表示テキストの上下のすき間
Flashなしなしボタンを一瞬点滅
Invokeなしなし割り当てられた Command を実行
Deselectなしなしボタンを OFF にする
Selectなしなしボタンを ON にする

RadioButtonの属性

TextLabel

TextLabelは1行または複数行の文字列を表示するラベルです。その内容は Text -> 文字列 か或いは TextVariable -> シンボル で指定します。後者の場合にはその結合変数の内容が文字列に変換され表示されます。また、文字列の中に "?n" があればそこで改行します。

属性入出力値(単位)デフォルト機能
Bitmapbitmapを表示
Foreground(FG)"black"文字色
Fontフォント文字フォント
Justify"left", "center", "right""center"行内の語の整列
Text文字列表示文字列
TextVariableシンボル表示文字列を割り当てるシンボル
BorderWidth(BD)ピクセル2境界(立体表示される)の幅
Width文字数表示の幅
Relief"flat", "groove", "raised", "ridge", "sunken""flat"枠の立体形状
TextAnchor"c", "n", "ne", "e", "se", "s", "sw", "w", "nw", "center""c"表示テキストを揃える方向
TextPadXピクセル1表示テキストの左右のすき間
TextPadYピクセル1表示テキストの上下のすき間

TextLabelの属性

TextLabel.jpg

図 TextLabelの用例

TextMessage

TextMessage は長い文字列を決められた幅でフォーマットしながら表示します。 その内容は Text -> 文字列 か或いは TextVariable -> シンボル で指定します。後者の場合にはその結合変数の内容が文字列に変換され表示されます。

| 属性| 入出力値(単位)| デフォルト| 機能 |

Aspect%150幅/高さ
Foreground(FG)"black"文字色
Fontフォント文字フォント
Justify"left", "center", "right""left"行内の語の整列
Text文字列表示文字列
TextVariableシンボル表示文字列を割り当てるシンボル
BorderWidth(BD)ピクセル2境界(立体表示される)の幅
Widthピクセル116表示の幅
Relief"flat", "groove", "raised", "ridge", "sunken""flat"枠の立体形状
TextAnchor"c", "n", "ne", "e", "se", "s", "sw", "w", "nw", "center""c"表示テキストを揃える方向
TextPadXピクセル1表示テキストの左右のすき間
TextPadYピクセル1表示テキストの上下のすき間

TextMessageの属性

TextMessage.jpg

Entry

Entry は文字列をキーボードから入力するための枠です。TextVariable であるシンボルを結合変数に指定することにより、入力された文字列は即座に利用できます。

属性入出力値(単位)デフォルト機能
ExportSelectionTrue, FalseTrue選択範囲を X に伝達
Foreground(FG)"black"文字色
Fontフォント文字フォント
InsertBackground"black"挿入カーソルの色
InsertOffTimemsec挿入カーソルの消灯時間
InsertOnTimemsec挿入カーソルの点灯時間
InsertWidthピクセル2挿入カーソルの幅
SelectBackground"green"選択範囲の背景色
SelectForeground"black"選択範囲の文字色
SelectBorderWidthピクセル1選択範囲の境界幅
ShowText文字""内容の代わりに表示する文字
State"disabled", "normal""normal"disabled = 読み出し専用
XScrollCommandコマンド横方向のスクロールバーの割り当て
Justify"left", "center", "right""left"行内の語の整列
TextVariableシンボル入力文字列を割り当てるシンボル
BorderWidth(BD)ピクセル2境界(立体表示される)の幅
Width文字数20表示の幅
Relief"flat", "groove", "raised", "ridge", "sunken""sunken"枠の立体形状

表 Entryの属性

Entry には次の表のような数々の入力編集機能が組み込まれています。

イヴェント機能
"<Button-1>"挿入点を指定
"<Control-Button-1>"選択範囲を保存して挿入点を指定
"<B1-Motion>"選択範囲をドラッグで指定
"<Shift-B1-Motion>"選択範囲の境界をドラッグで変更
"<Double-Button-1>"1語を選択
"<Triple-Button-1>" "<Control-slash>"全体を選択
"<Button-2>"挿入点に貼り込む
"<B2-Motion>"横スクロール
"<Left>" "<Control-b>"カーソルを1文字左
"<Shift-Left>"カーソルを1文字左、選択範囲を拡張
"<Control-Left>" "<Meta-b>"カーソルを1語左
"<Control-Shift-Left>"カーソルを1語左、選択範囲を拡張
"<Right>" "<Control-f>"カーソルを1文字右
"<Shift-Right>"カーソルを1文字右、選択範囲を拡張
"<Control-Right>" "<Meta-f>"カーソルを1語右
"<Control-Shift-Right>"カーソルを1語右、選択範囲を拡張
"<Home>" "<Control-a>"カーソルを Entryの開始点に
"<Shift-Home>"カーソルを Entryの開始点に、選択範囲を拡張
"<End>" "<Control-e>"カーソルを Entryの終点に
"<Shift-End>"カーソルを Entryの終点に、選択範囲を拡張
"<Select>" "<Control-Space>"(選択範囲を挿入点に合わせる)
"<Shift-Select>" "<Control-Shift-Space>"選択範囲を挿入点に合わせる
"<Control-backslash>"全体を消去
"<Delete>"左1文字または選択範囲を削除
"<Backspace>" "<Control-h>"左1文字を削除
"<Control-d>"右1文字を削除
"<Control-w>"左1語を削除
"<Meta-d>"右1語を削除
"<Condrol-k>"終端まで削除
"<Control-x>"選択範囲を削除
"<Control-t>"文字の並び変え

表 Entryの入力編集機能

Entryには様々な操作を加えることができます。

次の例は Entryの最も簡単な用例で、その結果は図の様になります。

w = Window[];
 f1 = Frame[w];
 t1 = TextLabel[f1, Text -> "Username: ",
   Side -> "left", PadX -> 10, PadY -> 10];
 e1 = Entry[f1, TextVariable :> user,
   Side -> "left", PadX -> 5];

 f2 = Frame[w];
 t2 = TextLabel[f2, Text -> "Password: ",
   Side->"left", PadX -> 10, PadY -> 10];
 e2 = Entry[f2, TextVariable :> pwd,
   Side -> "left", PadX -> 5,
   ShowText -> "*"];
Entry.jpg

図 Entryの用例

Scale

Scaleは槽 trough とその上をすべるスライダーとからなりたっています。槽はある量の可変範囲を、またスライダーはその現在値を表わします。Scaleに結合変数を結び付けておけば、それを通してスライダーの読み出し、設定がともに可能になります。

次の例は Scaleの最も簡単な使用例です。

 w = Window[];
 s = Scale[w, 
   From -> -10, 
   To   ->  10,
   Length -> 200,
   Orient -> "horizontal",
   Variable :> v,
   Command :> Print[{$Arg, v}]];

ここで From と Toはそれぞれ可変範囲の下限と上限を与えます。 また、Lengthと Orientは Scale全体の長さと向きを指定します。 この場合の結合変数は vで、それはまた、Commandのなかでも引用されています。Commandはスライダーの位置に変化があった場合に実行される式を指定します。また、$Argはこのコマンドが実行される時にスライダーの値として渡されるもので、vと同じ値を持っています。 この例は図のような結果をもたらします。 この例ではスライダーが動かされる度に端末に {-3,-3} のようにスライダーの示す値が印刷されます。

Scale.jpg

図 Scaleの用例

Scaleにはまた、表のような属性があります。

属性入出力値(単位)デフォルト機能
BigIncrent数値大ステップの大きさ
Commandコマンドスライダーが変化した際に実行
Digits正整数値の有効桁
Foreground(FG)"black"文字色
Fontフォントラベル用フォント
From数値下限値
To数値上限値
Label文字列ラベル文字列
Lengthピクセル100槽の長さ
Orient"horizontal" "vertical" "vertical"槽の向き
Resolution数値結果はこの値の整数倍
ShowValueTrue, FalseTrue値の表示
SliderLengthピクセルスライダーの長さ
State"normal" "active" "disabled"
TickInterval数値0ティックの間隔、0でティックなし
TroughColor槽の色
Variableシンボル結合変数
BorderWidth(BD)ピクセル2テキストの境界の幅
Widthピクセル15槽の太さ
Relief"flat", "groove", "raised", "ridge", "sunken""flat"枠の立体形状

表 Scaleの属性

Scaleには次の表に示すいくつかの入力機能が用意されています。

イヴェント機能
"<Button-1>"槽をクリックするとスライダーが1ステップ進む
"<Control-Button-1>"スライダーが端まで進む
"<Right>" "<Up>"スライダーが1ステップ増加
"<Control-Right>" "<Control-Up>"スライダーが1大ステップ増加
"<Left>" "<Down>"スライダーが1ステップ減少
"<Control-Left>" "<Control-Down>"スライダーが1大ステップ減少
"<Home>"スライダーが最上端或いは最左端に移動
"<End>"スライダーが最下端或いは最右端に移動

表 Scaleの入力機能

ScrollBar

ScrollBar は他の部品、Entry, ListBox, TextEditor, Canvasなどと一緒に 使われ、スクロール・バーの役目を果たします。 ScrollBarと他の部品との結合法はきわめて単純で、以下のようにします。

 physicists = 
   {"Copernicus", "Galileo Galilei", "Kepler",
     "Hooke", "Newton", "Euler", "Lagrange",
     "Gauss", "Faraday", "Maxwell", "Boltzmann",
     "Lorentz", "Einstein", "Bohr", "Heisenberg",
     "Schrodinger", "Pauli", "Dirac", "Fermi"};

 w = Window[];
 sb = ScrollBar[w, Orient -> "vertical", 
   Side -> "right", Fill->"y"];
 lb = ListBox[w, YScrollCommand :> sb[Set], 
   Insert -> {"end", physicists},
   Side -> "right"];

このように、(1) ScrollBar を先に定義する。(2)結び付けたい部品の中で

 スクロールコマンド :> スクロールバーシンボル[Set]

とすればOKです。この場合、スクロールコマンドは YScrollCommand 、 スクロールバーシンボルは sbです。定義する順序を逆にしてはいけません。 なお、ListBoxについては後述します。

ちなみにこの例は次のような結果になります。

ListBox.jpg

図 ScrollBarの用例

ScrollBarの入力機能と属性を表にまとめておきます。

イヴェント機能
"<Button-1>" "<Button-2>"矢のクリックでスライダーが1ステップ進む
"<B1-Motion>" "<B2-Motion>"スライダーのドラッグ
"<Control-Button-1>" "<Control-Button-2>"スライダーを端まで動かす
"<Up>" "<Down>"1行のスクロール
"<Control-Up>" "<Control-Down>"1画面の上下スクロール
"<Left>" "<Right>"1単位の左右スクロール
"<Control-Left>" "<Control-Right>"1画面の左右スクロール
"<Home>"スライダーが最上端或いは最左端に移動
"<End>"スライダーが最下端或いは最右端に移動

表 ScrollBarの入力機能

属性入出力値(単位)デフォルト機能
Commandコマンド(自動設定)スライダーが変化した際に実行
Jump{True, FalseFalseTrue}:ジャンプ・スクロール
Orient"horizontal" "vertical""vertical"槽の向き
TroughColor槽の色
BorderWidth(BD)ピクセル2境界の幅
Widthピクセル 槽の幅

表 ScrollBarの属性

ListBox

ListBox は文字列の集合から一つまたは複数の要素を選び出すための道具です。 基本的な動作は ListBox 作成時に文字列の集合を渡し、選択の完了後に選ばれた項目を受け取るというものです。 選択は属性 SelectMode の設定によって単数にも複数にもできます。 また、文字列の集合を随時挿入・削除するなど細かい動作も可能です。

SAD では要素の集合体はリストで表わされます。 リストは全体を { と }で囲まれ、要素の間を , で区切って表現します。図の例では、

 physicists = 
   {"Copernicus", "Galileo Galilei", "Kepler",
     "Hooke", "Newton", "Euler", "Lagrange",
     "Gauss", "Faraday", "Maxwell", "Boltzmann",
     "Lorentz", "Einstein", "Bohr", "Heisenberg",
     "Schrodinger", "Pauli", "Dirac", "Fermi"};

のように、シンボル physicists に右辺の文字列を要素とするリストを割り当てています。さて、ListBoxに対しては属性 Insertを用いて、

 lb = ListBox[w, YScrollCommand :> sb[Set], 
   Insert -> {"end", physicists},
   Side -> "right"];

のようにリスト "physicists"を伝達しています。この例ではリストを一旦シンボル "physicists"に割り当てていますが、もちろん

 lb = ListBox[w, YScrollCommand :> sb[Set], 
   Insert -> {"end", 
     {"Copernicus", "Galileo Galilei", "Kepler",
       "Hooke", "Newton", "Euler", "Lagrange",
       "Gauss", "Faraday", "Maxwell", "Boltzmann",
       "Lorentz", "Einstein", "Bohr", "Heisenberg",
       "Schrodinger", "Pauli", "Dirac", "Fermi"}},
   Side -> "right"];

のように直接書き込んでもかまいません。

さて、"Insert"の最初の引き数の"end"は文字列の挿入点を全体の最後にするという意味です。 ListBox ではこのような行の指定は表にある何れかの方法で行うことができます。 例えば、先頭から挿入する場合には 0 を指定します。 ListBoxには4つの選択モード SelectMode("browse", "single", "extended", "multiple")があります。このうち前2者が単数項目の選択、後2者が複数項目の選択です。それぞれのモードでは入力のイヴェントの結合に若干の差異があります。筆者は、通常はこのように4つものモードを使い分ける必要はなく、単に "browse" と "extended"の2者で充分ではないかと思います。ここではとりあえずこの2者の入力機能を説明し、他は参考文献を参照していただくことにします。

意味
数値 n最初から n 行目、先頭 = 1
"active"活性化された行
"anchor"Anchor 指定された行
"end"最終行
"@x, y"座標が (x, y) に最も近い行

表 ListBox の行の指定方法

"browse"モード

"browse"モードはデフォルトの選択モードです。 ここでは選択される項目は一つに限られています。

イヴェント機能
"<Button-1>"クリックした項目を選択・活性化
"<B1-Motion>"ドラッグで選択項目が移動
"<Shift-Button-1>"クリックした項目を活性化、非選択
"<Up>" "<Down>"活性化項目を1行上下
"<Control-Home>"最初の行を選択・活性化
"<Control-End>"最後の行を選択・活性化
"<Left>" "<Right>"1単位の左右スクロール
"<space>" "<Select>" "<Control-slash>"活性化した行を選択

表 "browse"モードの入力機能

"extended"モード

"extended"モードでは任意の複数の項目を選択できます。

イヴェント機能
"<Button-1>"クリックした項目を選択、選択の起点にする
"<B1-Motion>"起点からドラッグした範囲を選択
"<Button-Release-1>"その項目を活性化
"<Shift-Button-1>"起点からクリックした項目までの範囲を選択
"<Shift-B1-Motion>"起点からドラッグした範囲を連続的に選択
"<Control-Button-1>"クリックした項目の選択を反転、起点にする
"<Shift-B1-Motion>"起点からドラッグした範囲を起点と同じ状態にする
"<Up>" "<Down>"活性化項目を1行上下、起点にする
"<Shift-Up>" "<Shift-Down>"活性化項目から選択範囲を拡大する
"<Control-Home>"最初の行を選択・活性化
"<Control-Shift-Home>"最初の行までの範囲を選択・活性化
"<Control-End>"最後の行を選択・活性化
"<Control-Shift-End>"最後の行までの範囲を選択・活性化
"<Left>" "<Right>"1単位の左右スクロール
"<space>" "<Select>"活性化した行を選択
"<Control-slash>"全体を選択
"<Control-backslash>"選択を解除
"<Escape>"直前の選択動作をキャンセル

表 "extended"モードの入力機能

選択項目のとりだし

選択が行われた後に選択された項目を取り出すには

 a = リストボックスシンボル[Selection];

とすれば選択項目の番号がリストになって返されます。選択項目が単数の場合でも答えは必ずリストです。番号は最初の項目が 1 です。また、選択された文字列を取り出したいときには

 a = リストボックスシンボル[GetText[Selection]];

とすれば、選択された文字列がやはりリストで返ります。また、選択の有無にかかわらず、

 a = リストボックスシンボル[GetText[番号]];

とすれば、その番号の文字列が返ります。

ListBoxの属性

ListBox の属性を表に示します。 ここで行の指定は表 ListBoxの行の指定によって行います。

属性入出力値(単位)デフォルト機能
BorderWidth(BD)ピクセル2境界(立体表示される)の幅
Delete行1 または {行1, 行2}行1 または行1 から行2 までを削除
ExportSelectionTrue, FalseTrue選択範囲を X に伝達
Foreground(FG)"black"文字色
Fontフォント文字フォント
Height行数 表示の行数
Relief"flat", "groove", "raised", "ridge", "sunken""sunken"枠の立体形状
See指定した行を表示範囲に移す
SelectBackground"green"選択範囲の背景色
SelectBorderWidthピクセル1選択範囲の境界幅
SelectForeground"black"選択範囲の文字色
SelectMode"browse" "single" "extended" "multiple""browse"選択モード
Select$Clear行1 または {行1, 行2}行1 または 行1 から行2 の選択を解除
Select$Set行1 または {行1, 行2}行1 または 行1 から行2 を選択
SetGridTrue, FalseFalseTrueのときサイズの変更に制限
Width文字数 表示の幅
XScrollCommandコマンド横方向のスクロールバーの割り当て
XView文字位置横方向の表示位置
YScrollCommandコマンド縦方向のスクロールバーの割り当て
YView行数縦方向の表示位置

MenuとMenuButton

Menuはそのなかにいくつかの menu entry とよばれる部品を貼る枠です。 貼れるものは Button, CheckButton, RadioButton, Separator, と Cascadeです。 このうち、3種類のボタンはこれまで登場した3種類の単独のボタンとほぼ同様の動作をします。Separatorは部品と部品の間の区切りのための部品です。 Cascadeは多段式の Menuの連鎖をつくるための部品です。

MenuButtonはそこに Menuを割り当てることにより、MenuButton を押したときにだけ現われるプルダウン・メニューを実現します。MenuButtonには Button と同じ属性が備わっています。

次の例は MenuButton mb に Menu mnを割り当て、しかる後に mnに各種の部品を追加しています。また、mnに Cascadeされる Menu mn1 は Cascadeが mnに追加される前に定義しておきます。 つまり、mn, mn1, Cascadeの順に定義しないとうまく動作しません。 これは自分が親または子として参照する部品は自分より先に定義されていなければならないという事情によります。

 w = Window[];
 mb = MenuButton[w, Text -> "MENU"];
 mn = Menu[mb, TearOff -> True];
 mn1 = Menu[mn, TearOff -> True,
   Add -> {
     RadioButton[Text -> "Rare",
       Value -> 1, Variable :> cook],
     RadioButton[Text -> "Medium",
       Value -> 2, Variable :> cook],
     RadioButton[Text -> "Well-done",
       Value -> 3, Variable :> cook]}];
 mn[Add] = {
   Button[Text -> "Salad"],
   Separator[],
   Cascade[Text -> "Steak", Menu -> mn1],
   Button[Text -> "Fish"],
   Separator[],
   CheckButton[Text -> "Dessert", Variable :> dessert]};
 cook = 1;
 dessert = 1;

この例は図のような結果になります。

Menu.jpg

Menuの属性

Menuの属性を表に示します。 表で、「部品番号」とは Menu に貼られた各部品を識別する番号で1始まります。 また、"active" (今、マウスカーソルの置かれているもの)、 "last" (最後の部品)、"@y 座標" (y 座標にある部品) という指定も可能です。

属性入出力値(単位)デフォルト機能
BorderWidth(BD)ピクセル2境界(立体表示される)の幅
Delete部品番号1 {部品番号1, 部品番号2}"部品番号1"、或いは"部品番号1 から部品番号2" までの部品を削除する
DisabledForegrounddisabled状態の部品の文字色
EntryConfigure{部品番号, 属性 -> 値, ...}"部品番号の部品の属性を変更する
Fontフォント文字フォント
Foreground(FG)"black"文字色
Invoke部品番号部品番号の部品に割り当てられたコマンドを実行する
PostCommandコマンドMenuが現われる直前に実行する式
SelectColor"red"Check, Radioのセレクタの色
TearOffTrue, FalseFalseTrue の時 TearOff 部品を付加し、メニューをボタンから剥離・移動可能にする
YPosition部品番号部品番号の部品のスクリーン上の位置を返す

表 Menuの属性

TearOff

表の中で TearOff という属性を True (デフォルトは False) にすると図にある様に各メニューの最上部に破線が付加されます。 この破線も一種の部品で、これを選ぶと その Menu が MenuButton から独立したひとつの Window になります。 これはあるメニューを持続的に使用する場合大変便利です。 TearOff が True の場合は TearOff が部品番号 1 となり、他の部品は番号 2 から始まります。

Menuに貼られる部品の属性

Menuに貼られる部品は対応する単独部品の属性の一部を持っています。 次にそれらを示します。

属性入出力値(単位)デフォルト機能
ActiveBackgroundマウスカーソルが上にあるときの背景色
ActiveForegroundマウスカーソルが上にあるときの文字色
Accelerator
Bitmapボタン表面にbitmapを表示
Command選択時に実行する式
Fontフォント文字フォント
Foreground(FG)"black"文字色
Justify"center" "left" "right""center"テキストの整列
OffValue数値CheckbuttonがOFFの時の値
OnValue数値CheckbuttonをONにする値
SelectColor"red"チェックマークの色
State"normal" "active" "disabled""normal"エントリーの状態
Text文字列ボタン表面の表示文字列
Underline数値下線を付ける文字の位置、0 が最初の文字
Value数値RadioButtonをONにする値
Variableシンボル結合変数

表 Menuに貼られる部品の属性

Underline

Menu に貼られる部品に属性 Underline -> 文字位置 を指定すると、その位置 (0 を最初の文字とする) の文字に下線が付加されます。そしてメニューが表示されている状態でその文字のキーを打つと、その部品のコマンドが実行されます。また、<space> 及び <Return> キーを打つと、現在選ばれている部品のコマンドが実行されます。さらに <escape> キーはメニューの表示を消します。

OptionMenu

OptionMenu はいくつかのメニュー項目の中から一つを選択し、選択されたものの名称をボタン表面に表示するという機能を一度に実現します。次の例

 w = Window[];
 om = OptionMenu[w, TextVariable -> africananimal,
   Its -> {"lion", "giraffe", "zebra",
     "hippopotamus", "rhinoceros"}];
 africananimal = "giraffe";

は "Its" で指定した文字列のリストの中の一項目が TextVariable で指定した結合変数、"africananimal" に割り当てられます。 そしてその変数の値がボタン表面に図のように表示されます。 また、マウスで選択する際にはメニューが現在の設定値を中心に図のように展開されます。

OptionMenu には MenuButton と同様に、Menu を貼り付けることもできます。また、OptionMenu の属性は "Its" 以外は Button と同じです。

OptionMenu.jpg

図 OptionMenuの用例


トップ   差分 バックアップ リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-05-17 (土) 14:46:42