GUI#

ダイアログ#

msgbox(メッセージ[, ボタン種=BTN_OK, x=EMPTY, y=EMPTY, フォーカス=EMPTY, リンク表示=FALSE])#
メッセージボックスを表示します

クラス名

メッセージボックスのクラス名は UWSCR.MsgBox です
パラメータ:
  • メッセージ (文字列) -- ダイアログに表示するメッセージ

  • ボタン種 (ボタン定数 省略可) --

    表示するボタンを示す定数、 OR 連結で複数表示

    BTN_YES

    はい

    BTN_NO

    いいえ

    BTN_OK

    OK

    BTN_CANCEL

    キャンセル

    BTN_ABORT

    中止

    BTN_RETRY

    再試行

    BTN_IGNORE

    無視

  • x (数値 省略可) -- ダイアログの初期表示位置のX座標を指定、省略時(EMPTY)なら画面中央

  • y (数値 省略可) --

    ダイアログの初期表示位置のY座標を指定、省略時(EMPTY)なら画面中央

    前回表示位置に表示

    x, yに-1を指定するとそれぞれ前回表示した位置になります

  • フォーカス (ボタン定数 省略可) -- カーソルの初期位置をボタン定数で指定、省略時や該当ボタンがない場合は一番左のボタンがフォーカスされます

  • リンク表示 (真偽値 省略可) -- TRUEであればURLをクリック可能なリンクにする

戻り値:

押されたボタンを示すボタン定数 (×ボタンで閉じられた場合は BTN_CANCEL)

input(メッセージ[, デフォルト値=EMPTY, マスク表示=FALSE, x=EMPTY, y=EMPTY])#
インプットボックスを表示します

クラス名

インプットボックスのクラス名は UWSCR.Input です
パラメータ:
  • メッセージ (文字列または配列) --

    文字列

    メッセージ欄に表示されるメッセージ

    文字列の配列
    1番目がメッセージ欄に表示される
    2番目以降はラベルとして表示され、ラベル毎に入力欄が追加される
    ラベルは最大5つまで

  • デフォルト値 (文字列または配列 省略可) --

    文字列

    入力欄に予め入力しておく値

    文字列の配列

    入力欄毎のデフォルト入力値

  • マスク表示 (真偽値または配列 省略可) --

    真偽値

    入力欄をマスク表示するかどうか

    真偽値の配列

    入力欄毎のマスク設定

  • x (数値 省略可) -- ダイアログの初期表示位置のX座標を指定、省略時(EMPTY)なら画面中央

  • y (数値 省略可) --

    ダイアログの初期表示位置のY座標を指定、省略時(EMPTY)なら画面中央

    前回表示位置に表示

    x, yに-1を指定するとそれぞれ前回表示した位置になります

戻り値:

入力欄が一つの場合

入力された値、キャンセル時はEMPTY

入力欄が複数の場合

それぞれに入力された値の配列、キャンセル時は空配列

サンプルコード

// ラベルを2つ指定し入力欄を2つにする
labels = ['ログイン', 'ユーザー名', 'パスワード']
// 1つ目の入力欄のみデフォルト値を入れる
default = ['UserA', EMPTY]
// 2つ目の入力欄がマスクされるようにする
mask = [FALSE, TRUE]

// 入力値は配列で返る
user = input(labels, default, mask)
print 'ユーザー名: ' + user[0]
print 'パスワード: ' + user[1]

ファイルのドラッグアンドドロップについて

インプットボックスに対してExplorerなどからファイルをドラッグアンドドロップすると、そのファイルのパスが入力されます
複数ファイルをドロップした場合はパスがタブ文字で連結されて入力されます
入力欄が複数ある場合は、ドロップした入力欄にパスが挿入されます
入力欄以外にドロップされた場合は一つ目の入力欄にパスが入ります
slctbox(表示方法, タイムアウト秒, メッセージ=EMPTY, 表示項目[, 表示項目2, ..., 表示項目31])#
slctbox(表示方法, タイムアウト秒, x, y, メッセージ=EMPTY, 表示項目[, 表示項目2, ..., 表示項目29])
セレクトボックスを表示します

クラス名

セレクトボックスのクラス名は UWSCR.SlctBox です

引数x, yについて

第3、第4引数が数値であった場合はx, yが指定されたものとします
"100" など数値に変換できる文字列であってもここでは数値として扱われません
x, yの有無による表示項目として渡せる引数の数が変わります
パラメータ:
  • 表示方法 (SLCT定数) --

    項目の表示方法および戻り値の形式を示す定数

    表示方法と戻り値の形式をそれぞれ一つずつ OR で連結できます
    表示方法
    SLCT_BTN

    ボタン

    SLCT_CHK

    チェックボックス

    SLCT_RDO

    ラジオボタン

    SLCT_CMB

    コンボボックス

    SLCT_LST

    リストボックス

    戻り値の形式
    SLCT_STR

    項目名を返す

    SLCT_NUM

    インデックス番号で返す

  • タイムアウト秒 (数値) -- 指定秒数経過で自動的にダイアログを閉じる (キャンセル扱い)、0ならタイムアウトなし

  • x (数値 省略可) -- ダイアログの初期表示位置のX座標を指定、省略時(EMPTY)なら画面中央

  • y (数値 省略可) --

    ダイアログの初期表示位置のY座標を指定、省略時(EMPTY)なら画面中央

    前回表示位置に表示

    x, yに-1を指定するとそれぞれ前回表示した位置になります

  • メッセージ (文字列 省略可) -- メッセージ欄に表示されるメッセージ

  • 表示項目 (文字列または配列) -- 表示される項目名、または項目名を格納した配列

  • 表示項目2-31 (文字列または配列) -- 表示される項目名、または項目名を格納した配列

戻り値:

SLCT_NUM および SLCT_STR 未指定時
選択項目に応じた定数が返る
n番目の項目が選ばれれば SLCT_n
SLCT_1 から SLCT_31 まで
SLCT_CHK, SLCT_LST 以外
選択項目を示す値が返る
SLCT_CHK, SLCT_LST 指定時
選択項目の値が合算される

3番目と5番目が選ばれた場合 SLCT_3 or SLCT_5 が返る

警告

表示項目の配列指定で項目数が31を超える場合に、32個目以上を選択するとエラーになります

SLCT_NUM 指定時
SLCT_CHK, SLCT_LST 以外
選択位置のインデックス値(0から)が返る
SLCT_CHK, SLCT_LST 指定時
選択位置のインデックス値を格納した配列

注釈

項目数が31を超えてもOK

SLCT_STR 指定時
SLCT_CHK, SLCT_LST 以外
選択した項目の表示名
SLCT_CHK, SLCT_LST 指定時
選択した項目の表示名を格納した配列

注釈

項目数が31を超えてもOK

キャンセル時

-1 を返す

UWSCとの違い

  • タイムアウト時の戻り値が0ではなく-1になった

  • 表示項目に連想配列を渡した場合、値でなはくキーが表示される

  • SLCT_CHK, SLCT_LST 指定時の戻り値がタブ文字連結された文字列ではなく配列になった

popupmenu(メニュー項目[, x=EMPTY, y=EMPTY])#
ポップアップメニューを表示します
パラメータ:
  • メニュー項目 (配列) -- 表示項目を示す配列、要素が配列の場合サブメニューになる

  • x (数値 省略可) -- メニュー表示位置のX座標を指定、省略時(EMPTY)はマウスカーソル位置

  • y (数値 省略可) -- メニュー表示位置のY座標を指定、省略時(EMPTY)はマウスカーソル位置

戻り値:

選択した項目の表示名、メニューの外側を選んだ場合はEMPTY

サンプルコード

// サブメニュー表示方法
list = ["項目1", "項目2", "サブメニュー", ["サブ項目1", "サブ項目2"], "項目3"]
// 要素を配列にすると直前の項目のサブメニューになる
selected = popupmenu(list)
// 項目1
// 項目2
// サブメニュー > サブ項目1
//                サブ項目2
// 項目3

// ネストも可能
list = ["menu", ["branch1", "branch2", ["leaf1", "leaf2"]]]
popupmenu(list)

UWSCとの違い

  • メニュー項目に連想配列を渡した場合、値ではなくキーが表示されます

  • メニュー項目を選んだ場合の戻り値が項目のインデックス値ではなく選択項目の表示名になりました

  • メニュー項目外を選んだ場合の戻り値が-1ではなくEMPTYになりました

メッセージ表示#

balloon(メッセージ[, X=0, Y=0, 変形=FUKI_DEFAULT, フォントサイズ=EMPTY, 文字色=$000000, 背景色=$00FFFF, 透過=0])#
fukidasi(メッセージ[, X=0, Y=0, 変形=FUKI_DEFAULT, フォントサイズ=EMPTY, 文字色=$000000, 背景色=$00FFFF, 透過=0])#
吹き出しを表示します
パラメータ:
  • メッセージ (文字列) -- 表示するメッセージ

  • X (数値 省略可) -- 表示位置 (X座標)

  • Y (数値 省略可) -- 表示位置 (Y座標)

  • 変形 (定数 省略可) --

    変形方法を示す定数を指定

    FUKI_DEFAULT
    変形しない
    FUKI_UP
    吹き出しに上向きの嘴を付ける
    FUKI_DOWN
    吹き出しに下向きの嘴を付ける
    FUKI_LEFT
    吹き出しに左向きの嘴を付ける
    FUKI_RIGHT
    吹き出しに右向きの嘴を付ける
    FUKI_ROUND
    吹き出しの角を丸くする
    FUKI_POINT
    嘴定数に加えることで、表示位置の基準を吹き出しの左上ではなく嘴の先にする
    balloon("マウスカーソル位置が吹き出しの左上", G_MOUSE_X, G_MOUSE_Y, FUKI_DOWN)
    sleep(2)
    balloon("マウスカーソル位置に嘴を向ける", G_MOUSE_X, G_MOUSE_Y, FUKI_DOWN or FUKI_POINT)
    sleep(2)
    

  • フォントサイズ (数値 省略可) -- 表示される文字のサイズ、EMPTY時はフォント設定に従う

  • フォント名 (数値 省略可) -- 表示される文字のフォント、EMPTY時はフォント設定に従う

  • 文字色 (数値 省略可) -- 文字の色をBGR値で指定、省略時は黒

  • 背景色 (数値 省略可) --

    背景の色をBGR値で指定、省略時は黄色

    ヒント

    BGRの例

    • 青: $FF0000

    • 緑: $00FF00

    • 赤: $0000FF

    • 白: $FFFFFF

    • 黒: $000000

    • 黄: $00FFFF

    UWSCとの違い

    色指定を0にした場合、黄色ではなく黒になります

  • 透過 (数値 省略可) --

    ウィンドウを透過させます

    • 0: 透過させない

    • 1~255: 数値が大きいほど透明度が高い

    • -1: 背景を透明にするが枠線は残る

    • -2: 背景と枠線を透明にする

戻り値:

なし

吹き出しの表示は1スレッドにつき1つまで

吹き出し表示中にballoon()を呼ぶと、以前の吹き出しは削除され新たな吹き出しが表示されます
吹き出し表示中に別のスレッドでballoonを呼んだ場合はそれぞれ表示されます
logprint(表示フラグ[, X=EMPTY, Y=EMPTY, 幅=EMPTY, 高さ=EMPTY])#
printウィンドウの表示状態を変更します

print窓が無効の場合

print窓が無効の場合この関数は無視されます
以下のいずれかの場合のみこの関数は有効です
  • OPTION GUIPRINT がTRUEに指定されている

  • 設定ファイルの options.gui_print がTRUEになっている

  • ウィンドウ強制モード(uwscr --window)で起動している

  • UWSCRがguiビルドの場合

パラメータ:
  • 表示フラグ (真偽値) --

    TRUE
    print窓を表示する
    FALSE
    print窓を非表示にする
    既に表示済みなら消す

  • X (数値 省略可) -- 表示位置 (X座標)、EMPTYなら現状維持

  • Y (数値 省略可) -- 表示位置 (Y座標)、EMPTYなら現状維持

  • (数値 省略可) -- 表示サイズ (幅)、EMPTYなら現状維持

  • 高さ (数値 省略可) -- 表示サイズ (高さ)、EMPTYなら現状維持

戻り値:

なし

HTMLフォーム#

createform(HTMLファイル, タイトル[, 非同期フラグ=FALSE, オプション=FOM_DEFAULT, 幅=EMPTY, 高さ=EMPTY, X=EMPTY, Y=EMPTY])#
フォームウィンドウを表示します

WebView2 Runtimeが必要です

Microsoft Edge WebView2 Runtime がインストールされていない場合この関数はエラーになります

UWSCとは互換性がありません

UWSCではIEコンポーネントを利用していたのに対してUWSCRではWebView2を利用しています
そのためUWSCで実行していたコードが動作しない場合があります
パラメータ:
  • HTMLファイル (文字列) --

    表示したいHTMLファイルのパス

    ファイルの配置について

    HTMLファイルから別のファイルを参照する場合、もとのHTMLファイルを起点とした相対パスを指定します

    • C:\Test\
      • form.html
        • js\
          • form.js

        • css\
          • form.css

        • img\
          • form.png

    <!DOCTYPE html>
    <html lang="ja">
    <head>
        <meta charset="UTF-8">
        <title>別ファイル参照例</title>
        <link rel="stylesheet" href="css/form.css">
        <script src="js/form.js"></script>
    </head>
    <body>
        <img src="img/form.png">
        <form>
            <input type="submit" value="OK" name="OK">
        </form>
    </body>
    </html>
    
    html = "c:\test\form.html"
    r = createform(html, "test")
    

  • タイトル (文字列) -- ウィンドウタイトル

  • 非同期フラグ (真偽値 省略可) --

    非同期で実行するかどうか

    • FALSE: submitボタンが押される、またはウィンドウが閉じられるまで待機する

    • TRUE: 関数実行後にウィンドウが表示されたら制御を返す

  • オプション (定数 省略可) --

    以下の定数の組み合わせ(OR連結)を指定

    FOM_NOICON
    閉じるボタンを非表示にする
    FOM_MINIMIZE
    最小化ボタンを表示する
    FOM_MAXIMIZE
    最大化ボタンを表示する
    FOM_NOHIDE
    submitボタンが押されてもウィンドウを閉じない
    FOM_NOSUBMIT
    submitボタンが押されてもsubmitに割り当てられた処理(action)を行わない
    FOM_NORESIZE
    ウィンドウのサイズ変更不可
    FOM_BROWSER
    互換性のために残されていますが使用できません (指定しても無視されます)
    FOM_FORMHIDE
    ウィンドウを非表示で起動する
    FOM_TOPMOST
    ウィンドウを最前面に固定
    FOM_NOTASKBAR
    タスクバーにアイコンを表示しない
    FOM_FORM2
    互換性のために残されていますが使用できません (指定しても無視されます)
    FOM_DEFAULT
    オプションなし (0)

  • (数値 省略可) -- ウィンドウの幅

  • 高さ (数値 省略可) -- ウィンドウの高さ

  • X (数値 省略可) -- ウィンドウのX座標

  • Y (数値 省略可) -- ウィンドウのY座標

戻り値の型:

Form情報 または Formオブジェクト

戻り値:

非同期フラグによる

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>Sample.html</title>
</head>
<body>
    <form>
        <div>
            <span>ユーザー名</span>
            <input type="text" name="user">
        </div>
        <div>
            <span>パスワード</span>
            <input type="password" name="pwd">
        </div>
        <div>
            <select name="slct">
                <option value="foo">foo</option>
                <option value="bar">bar</option>
                <option value="baz">baz</option>
            </select>
        </div>
        <div>
            <textarea name="txt" cols="30" rows="10"></textarea>
        </div>
        <div>
            <input type="submit" value="OK" name="OK">
            <input type="submit" value="Cancel" name="Cancel">
        </div>
    </form>
</body>
</html>
r = createform("sample.html", "Sample")
select r.submit
    case "OK"
        print "OKが押されました"
        print "formの値は以下です"
        for data in r.data
            print data.name + ": " + data.value
        next
    case "Cancel"
        print 'キャンセルされました'
    case NULL
        print 'submitされずにウィンドウが閉じられました'
selend

Form情報#

submit時のform情報を示す UObject

// submit時
{
    "submit": $submit, // $submitには押されたsubmitボタンのnameが入る
    "data": [
        // form内の各要素のnameおよびvalueが格納される
        { "name": $name, "value", $value},
    ]
}
// ウィンドウが閉じられた場合
{
    "submit": null, // NULLになる
    "data": []      // 空配列
}

Formオブジェクト#

Formウィンドウを示すオブジェクト

COMオブジェクトではありません

UWSCとは異なりCOMオブジェクトではなくUWSCR独自のオブジェクトとなります

別スレッドからは呼び出せません

Formオブジェクトをpublic変数に代入して別のスレッドから呼ぶことはできません
class Form#
property Document#
フォームに表示されているページのdocumentオブジェクト
戻り値の型:

WebViewRemoteObject

Wait()#
ウィンドウが閉じられるのを待つ
戻り値の型:

Form情報

戻り値:

submit時のform情報を示す Form情報 オブジェクト
submitせず閉じた場合は submit がNULLになります

// test.htmlにはOKとCancelのsubmitボタンがあるものとする
f = createform("test.html", "Test", true)
result = f.wait()
select result.submit
    case "OK"
        for data in result.data
            print data.name + ": " + data.value
        next
    case "Cancel"
        print "キャンセルされました"
    case NULL
        print "ウィンドウが閉じられました"
    default
        print "なにかおかしいです"
selend
SetVisible([表示フラグ=TRUE])#
ウィンドウの表示状態を変更する
パラメータ:

表示フラグ (真偽値 省略可) -- TRUEで表示、FALSEで非表示

戻り値:

なし

Close()#
ウィンドウを閉じる
戻り値:

なし

SetEventHandler(エレメント, イベント, 関数)#
任意のイベント発生時に実行する関数を登録します
関数は引数を2つまで受けられます、内訳は以下の通りです
  1. イベント発生エレメントのvalue値

  2. イベント発生エレメントのname属性値

パラメータ:
  • エレメント (WebViewRemoteObject) -- イベント発生元のエレメントを示す WebViewRemoteObject

  • イベント (文字列) -- イベント名

  • 関数 (ユーザー定義関数) -- イベント発生時に実行される関数

戻り値:

なし

f = createform("test.html", "Test", true)
select = f.document.querySelector("select")
f.SetEventHandler(select, "change", on_select_change)

button = f.document.querySelector("input[type=button]")
f.SetEventHandler(button, "click", on_button_click)

f.wait()

// 1つ目の引数でイベント発生エレメントのvalue
// 2つ目の引数でnameを受ける
procedure on_select_change(value, name)
    print value
    print name
fend

// 引数は必須ではない
procedure on_button_click()
    print "クリックされました"
fend

WebViewRemoteObject#

フォームに表示されているページのJavaScriptオブジェクトを示します
利用方法は RemoteObject と同等です

組み込みウィンドウのクラス名一覧#

関数名

クラス名

定数

msgbox

UWSCR.MsgBox

CLASS_MSGBOX

input

UWSCR.Input

CLASS_INPUTBOX

slctbox

UWSCR.Slctbox

CLASS_SLCTBOX

popupmenu

UWSCR.Popup

CLASS_POPUPMENU

balloon

UWSCR.Balloon

CLASS_BALLOON

logprintwin

UWSCR.LogPrintWin

CLASS_LOGPRINTWIN

createform

UWSCR.Form

CLASS_FORM