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
指定時の戻り値がタブ文字連結された文字列ではなく配列になった
- ポップアップメニューを表示します
- パラメータ:
メニュー項目 (配列) -- 表示項目を示す配列、要素が配列の場合サブメニューになる
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オブジェクト
- 戻り値:
非同期フラグによる
FALSE: Form情報
TRUE: 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オブジェクト#
COMオブジェクトではありません
別スレッドからは呼び出せません
- class Form#
- property Document#
- フォームに表示されているページのdocumentオブジェクト
- 戻り値の型:
- Wait()#
- ウィンドウが閉じられるのを待つ
// 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つまで受けられます、内訳は以下の通りです
イベント発生エレメントのvalue値
イベント発生エレメントの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#
組み込みウィンドウのクラス名一覧#
関数名 |
クラス名 |
定数 |
---|---|---|
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 |