# uicontrol

グラフィックユーザーインターフェイスオブジェクトを作成

## 呼び出し手順

                h = uicontrol(PropertyName,PropertyValue,...)
                h = uicontrol(parent,PropertyName,PropertyValue,...)
                h = uicontrol(uich)

## 説明

このルーチンは図にオブジェクトを作成します.

図のオブジェクトが(最初のパラメータとして)指定された場合, この図にuicontrolが作成されます.ハンドルが指定されない場合, uicontrolが(`gcf()`のコールにより得られる) カレントの図に作成されます. カレントの図が存在しない場合, uicontrolを作成する前に作成されます.

コントロールが作成される際に,パラメータとして指定されたプロパティが 適当な値で設定されます. これはuicontrolを作成する際と同じで,この後,プロパティが `set()`コマンドで設定されます. それにもかからわらず, 一般に `uicontrol()`のコールにより プロパティを設定する方がより効率的です. Scilabと全てのグラフィックオブジェクトは 適当な機構により通信を行います. つまり,適当なuicontrolを作成するには, 適当なフィールドの使用方法を知る必要があります.

`h= uicontrol(PropertyName, PropertyValue,...)` は, uicontrolを作成し,指定したプロパティを割付,値を代入します. 値が指定されないプロパティにはデフォルト値が代入されます. デフォルトの uicontrol の形式は "Pushbutton" です. デフォルトの親は,カレントの図です. これらおよび他のプロパティに関する情報についてはプロパティの節を 参照ください.

`h= uicontrol(parent, PropertyName, PropertyValue,...)` はハンドルparentで指定されたオブジェクトにuicontrolを作成します. 親プロパティと異なる値を指定する場合, 親プロパティの値が優先されます. parentは図のハンドルです.

`h= uicontrol(uich)` はuichにより指定された uicontrolにフォーカスを与えます.

## プロパティ

BackgroundColor

  [1,3] 実数ベクトルまたは文字列

  uicontrolの背景色です. 色は赤,緑および青の値として指定されます. これらの値は[0,1]の範囲の実数です. 色は[R,G,B]のような実数ベクトルまたは"R|G|B|"のように "|"で区切られた文字列で指定できます.

Callback

  文字列

  uicontrolが有効な時(例えばボタンをクリックした時), Scilabインタプリタで評価される命令.

Callback_Type

  整数

  uicontrolに伝送されるコールバックの型.

  - `-1` none (コールバックはアクティブではありません)

  - `0` Scilab命令

  - `1` CまたはFortran関数

  - `2` Scilab関数

Enable

  {on} | off

  uicontrolを有効または無効にします. このプロパティを`"on"` (デフォルト)に 設定した場合, uicontrolは有効となりますが, このプロパティに`"off"`を指定すると uicontrolはマウスの操作に応答せず,グレイアウトされます.

FontAngle

  {normal} | italic | oblique

  コントロールが何らかのテキストを含む場合, このプロパティはフォントの傾きを設定します.

FontSize

  スカラー

  コントロールが何らかのテキストを含む場合, このプロパティはフォントの大きさをFontUnits単位で設定します.

FontUnits

  {points} | pixels | normalized

  コントロールが何らかのテキストを含む場合, このプロパティはFontSizeを指定する単位を指定します.

FontWeight

  light | {normal} | demi | bold

  コントロールが何らかのテキストを含む場合, このプロパティは使用するフォントの重みを指定します.

FontName

  文字列

  コントロールのテキストを表示する際に 選択されたフォントの名前を選ぶ際に使用されます.

ForegroundColor

  [1,3] 実数ベクトルまたは文字列

  uicontrolの前景色です. 色は赤,緑および青の値として指定されます. これらの値は[0,1]の範囲の実数です. 色は[R,G,B]のような実数ベクトルまたは"R|G|B|"のように "|"で区切られた文字列で指定できます.

HorizontalAlignment

  left | {center} | right

  uicontrolのテキスト水平アラインメントを設定します. このプロパティはText, Editおよびチェックボックスで のみ効果があります.

ListboxTop

  スカラー

  ListBoxの場合, このプロパティは リストのどの要素がリストの可視エリアの先頭行に 現れるかを示します.

Max

  スカラー

  "Value"プロパティで設定できる最大値を指定します. しかし,各uicontrolにおいて以下のように異なる意味を 有します:

  - CheckBoxes: Maxは, コントロールがチェックされた際に "Value"プロパティがとる値です.

  - Sliders: スライダの最大値.

  - ListBoxes: (Max-Min)>1 の場合, リストで複数の選択を行うことができます. それ以外の場合はできません.

Min

  スカラー

  "Value"プロパティで設定できる最小値を指定します. しかし,各uicontrolにおいて以下のように異なる意味を 有します:

  - CheckBoxes: Minはコントロールのチェックが外された際に "Value"プロパティがとる値です.

  - Sliders: スライダの最小値.

  - ListBoxes: (Max-Min)>1 の場合, リストで複数の選択を行うことができます. それ以外の場合はできません.

Parent

  ハンドル

  uicontrolの親のハンドル. このプロパティを変更すると, コントロールをある図から別の図に移動することができます.

Path

  このプロパティはもはやサポートされていません.

Position

  [1,4] 実数ベクトルまたは文字列.

  このプロパティは コントロールの形状を設定または取得する際に使用されます. このプロパティはベクトル [x y w h]です. ただし,各文字は左上隅のx位置,左上隅のy位置, uicontrolの幅および高さを表します. "x|y|w|h"のように 各文字を"|"で区切った文字列で表すこともできます. 単位は,"Units"プロパティで定義されます.

  幅と高さはスライダの向きを定義します. 幅が高さよりも大きい場合,スライダは水平の向きとなり, それ以外の場合は垂直に配置されます.

Relief

  flat | groove | raised | ridge | solid | sunken

  uicontrolの境界の外観:

  - PushButtons: "Relief"プロパティのデフォルト値は"raised"です.

  - Edits: "Relief"プロパティのデフォルト値は"sunken"です.

  - その他のスタイル: "Relief"プロパティのデフォルト値は"flat"です.

SliderStep

  [1,2] 実数ベクトル

  [small big], smallステップはスライダをクリックした際, または(スライダにフォーカスがあす時に) キーボード矢印をタッピングした際の 移動量を表します; bigステップはCtrl-keyboard-矢印により 移動する量を表します. bigステップが省略された場合, スケールの1/10がデフォルト値となります.

String

  文字列.

  このプロパティは(フレームおよびスライダ形式を除く) uicontrolに表示されるテキストを表します. 表の場合,この値は文字列の行列です. ListBoxesおよびPopupMenusの場合, この値は文字列のベクトルまたは 各要素を"|"で区切った文字列とすることができます. Text uicontrolsの場合, テキストを整形するために この文字列にHTMLコードを含めることができます.

  Pushbutton または Text uicontrolsの場合, テキストを2つの$ (ドル記号)で括ると,そのテキストは LaTeX式とみなされます. また,< および > で括ると, MathML式とみなされます.

  Imageの場合, この値は画像ファイルのパスを指定します.

  Tableの場合, この値は以下のように表データ全体を指定します : `[IGNORED COL1-HEADER...COLN-HEADER;ROW1-HEADER, ROW1COL1-DATA, ROW1COLN-DATA;...;ROWM-HEADER, ROWMCOL1-DATA, ROWMCOLN-DATA]`.

TooltipString

  文字列または文字列ベクトル

  このプロパティは, マウスがこのuicontrolの上を通過した際に表示される uicontrol tooltipのテキストを表します.

Style

  {pushbutton} | radiobutton | checkbox | edit | text | slider | frame | listbox | popupmenu | image | table

  uicontrolのスタイル. このプロパティは作成時に設定する必要があり, 一度uicontrolが作成される後は変更できません. 以下に各値の簡単な説明を示します:

  - Pushbutton: 矩形のボタンで, 通常コールバック実行に使用されます.

  - Radiobutton: 状態を有するボタン. RadioButtonsは相互排他的であることを 意図しています(使用するコード側で 相互排他的動作を実装する必要があります).

  - Checkbox: 状態を有するボタン ( 複数の独立した選択肢がある場合に使用されます).

  - Edit: 編集可能な文字列領域.

  - Text: テキスト制御 (一般にスタティック).

  - Slider: 倍率コントロール, マウスで範囲内の値を設定するために使用されるスクロールバーです.

  - Frame: 関連するコントロールをグループ化する際に使用される 領域を表すコントロール.

  - Listbox: スクロール可能な項目のリストを表すコントロール. 項目はマウスで選択できます.

  - Popupmenu: クリック時にメニューを表示するボタン.

  - Image: 選択された画像を表示するサブウィンドウ.

  - Table: 編集可能な表.

Tag

  文字列

  このプロパティは一般にコントロールを特定するために使用されます. これによりコントロールに"名前"を付けることができます. 通常,`findobj()`と組み合わせて使用されます.

Units

  {points} | pixels | normalized

  "Position"プロパティを指定するために使用される単位を設定します.

Userdata

  Scilabデータ

  Scilabオブジェクト(string,string matrix, matrix mxn)をuicontrolに 関連付ける際に使用できます.

Value

  スカラーまたはベクトル

  uicontrolの値. 正確な意味はuicontrolのスタイルに依存します:

  - CheckBoxes, Radio buttons: onの場合に最大値(上記参照), offの場合に最小値に設定されます.

  - ListBoxes, PopupMenus: 値はリストで選択されたエントリの添字に対応する添字のベクトルです. 1はリストの先頭要素です.

  - Sliders: スライダバーが指す値.

  - Images: 画像プロパティ `[X-Scale Y-Scale X-Shear Y-Shear RotationAngle]` を設定する際に使用される値

Verticalalignment

  top | {middle} | bottom

  uicontrolでテキストの垂直アラインメントを設定します. このプロパティはText および CheckBoxes スタイルでのみ 効果があります.

Visible

  {on} | off

  uicontrolの可視/不可視を設定します. このプロパティが `"on"` (デフォルト)に設定された場合,uicontrolは可視です. しかし,このプロパティが`"off"`に設定された場合, uicontrolは親の図の中に表示されません.

## 例

    f=figure();
    // 図を作成
    h=uicontrol(f,'style','listbox', ...
     'position', [10 10 150 160]);
    // リストボックスを作成
    set(h, 'string', "item 1|item 2|item3");
    // fill the list
    set(h, 'value', [1 3]);
    // リストで要素1と3を選択
    close(f);
    // close the figure

uicontrol関数はオーバーロードできます

    // mlistを作成
    mymlist = mlist(['objid','A','B'],[],[]);

    // objidのset / getをオーバーロード
    function result = %objid_uicontrol(varargin)
      // res = uicontrol(mymlist,'A');
      obj_tmp   = varargin(1);
      field_tmp = varargin(2);
      mprintf('uicontrol on an object of type %s, field = %s\n', typeof(obj_tmp), field_tmp);
      result = %t;
    endfunction

    res = uicontrol(mymlist,'property');

プッシュボタンまたはテキストはLaTeXまたはMathMLラベルを保有できます

    // LaTeX
    f=figure();
    h=uicontrol(f,"style","pushbutton","string","$x^2$");
    // MathML
    hh=uicontrol(f,"style","pushbutton","string","<msup><mi>x</mi><mn>2</mn></msup>");
    hh.Position = h.Position + [50, 0, 0, 0];
    // Text
    h=uicontrol(f,"Style","text","string","$\Gamma(s)=\int_0^\infty t^{s-1}\mathrm{e}^{-t}\,\mathrm{d}t$");
    // 小さすぎる場合
    h.fontsize=20

    // 編集可能な表を図に読み込みます:
    // 表のデータを作成:
    params = [" " "Country" "Population [Mh]" "Temp.[Â°C]" ];
    towns = ["Mexico" "Paris" "Tokyo" "Singapour"]';
    country = ["Mexico" "France" "Japan" "Singapour"]';
    pop  = string([22.41 11.77 33.41 4.24]');
    temp = string([26 19 22 17]');
    table = [params; [ towns country pop temp ]]

    f = gcf();
    clf
    as = f.axes_size;  // [幅 高さ]
    delete(ut)
    ut = uicontrol("style","table",..
                   "string",table,..
                   "position",[5 as(2)-100 300 87],.. // => @図の左上隅
                   "tooltipstring","Data from majors towns")

    // 表のいくつかの値を手で修正してください. その後, uiから戻ってください:
    matrix(ut.string,size(table))

## 参照

- figure
- set
- get
- uimenu
- LaTeXおよびMathML