ダイアログ等を表示する組み込み関数の変更点についての解説です。
クラス名
各ウィンドウのクラス名がUWSCとは異なります。また、それぞれ定数が定義されています。
関数 | クラス名 | 定数 |
---|---|---|
msgbox | UWSCR.MsgBox | CLASS_MSGBOX |
input | UWSCR.Input | CLASS_INPUTBOX |
slctbox | UWSCR.SlctBox | CLASS_SLCTBOX |
balloon | UWSCR.Balloon | CLASS_BALLOON |
logprint | UWSCR.LogPrintWin | CLASS_LOGPRINTWIN |
createform | UWSCR.Form | CLASS_FORM |
print文/logprint
UWSCRがコンソールアプリケーションとなったことから、print
文の出力は原則コンソール上で行われるようになりました。UWSCのようにウィンドウ表示をする場合は以下のいずれかを行ってください。
- スクリプト内で
OPTION GUIPRINT
を設定する - 設定ファイルの
options.gui_print
をtrueにする -
uwscr --window
で実行する - GUIビルドのUWSCRを使う
GUIビルドのUWSCRは提供されていません。利用者自身でソースコードからビルドする必要があります。またGUIビルド版は十分なテストが行われていないため予期せぬ動作を起こす可能性があります。
input
複数入力
入力欄を複数指定できるようになりました。第一引数に配列を渡すことで入力欄を複数にできます。配列の内訳は[メッセージ, ラベル1, ラベル2, ...]
となっており、0番目がダイアログのメッセージ、1番目以降が各入力欄のラベルとなります。
input(["0番目はメッセージ", "ラベル1", "ラベル2"])
入力欄が複数ある場合はinput関数の戻り値が配列となり、各入力欄に入力された値が返ります。キャンセル時は空配列です。
第二引数のデフォルト値、第三引数のマスクフラグもラベル数に合わせた配列を渡すことで個別に指定できます。
// 二箇所入力
labels = ["ログイン認証", "ユーザー名", "パスワード"]
// デフォルト値、ユーザー名にデフォルト値を入れる
default = ["user1", EMPTY]
// マスクフラグ、パスワードをマスクする
mask = [FALSE, TRUE]
user = input(labels, default, mask)
if length(user) > 0 then
print 'ユーザー名: ' + user[0]
print 'パスワード: ' + user[1]
else
print 'キャンセルされました'
endif
ファイルのドラッグアンドドロップについて
Explorer等からファイルをドラッグアンドドロップすると入力欄にそのファイルパスが自動入力されます。また、入力欄が複数ある場合は入力したい欄にドロップすることでその入力欄に自動入力されます。
slctbox
以下の破壊的変更が行われています。既存のスクリプトを実行する場合はご注意ください。
戻り値のタブ文字連結を廃止
UWSCではSLCT_CHK
やSLCT_LST
で複数項目を選んだ場合にタブ文字連結された文字列を返していましたが、UWSCRでは配列を返します。
items = slctbox(SLCT_LST or SLCT_STR, 0, "えらぶ", "foo", "bar", "baz")
for item in split(items, "<#TAB>")
print item
next
items = slctbox(SLCT_LST or SLCT_STR, 0, "えらぶ", "foo", "bar", "baz")
for item in items
print item
next
表示項目が連想配列の場合
連想配列の値ではなくキーを表示するようになりました。
hash list
hoge = "ほげほげ"
fuga = "ふがふが"
piyo = "ぴよぴよ"
endhash
selected = slctbox(SLCT_BTN or SLCT_STR, 0, "えらぶ", list)
if selected != -1 then
print list[selected]
else
print "キャンセルされました"
endif
タイムアウト時の戻り値
0
ではなく-1
を返すようになりました。
popupmenu
以下の破壊的変更が行われています。既存のスクリプトを実行する場合はご注意ください。
戻り値の変更
戻り値がインデックス値ではなく、選んだ項目に表示される文字列になりました。枠外を選択した場合はEMPTY
が返ります。
サブメニュー指定方法の変更
メニューの要素を配列にするとそれらの項目がサブメニューになります。従来の波括弧{}
表記は無視され通常の文字列要素として扱われます。
// 要素を配列にすると直前の項目のサブメニューになる
list = ["項目1", "項目2", "サブメニュー", ["サブ項目1", "サブ項目2"], "項目3"]
popupmenu(list)
連想配列を渡した場合
メニュー項目として連想配列を渡した場合は値ではなくキー一覧が表示されるようになりました。
hash list
hoge = "ほげほげ"
fuga = "ふがふが"
piyo = "ぴよぴよ"
endhash
selected = popupmenu(list)
if selected != EMPTY then
print list[selected]
else
print "キャンセルされました"
endif
balloon/fukidasi
変形方法を示す定数を追加
UWSCでは第四引数でクチバシの向きを数値で指定していましたが、これに該当する定数を追加しました。また、角丸表示ができるようになりました。クチバシの表示位置はUWSCとは異なります。
定数 | 詳細 |
---|---|
FUKI_DEFAULT | 変形しない |
FUKI_UP | 吹き出しに上向きのクチバシを付ける |
FUKI_DOWN | 吹き出しに下向きのクチバシを付ける |
FUKI_LEFT | 吹き出しに左向きのクチバシを付ける |
FUKI_RIGHT | 吹き出しに右向きのクチバシを付ける |
FUKI_ROUND | 吹き出しの角を丸くする |
FUKI_POINT | 指定座標をクチバシの先にする |
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)
背景色に0を指定した場合
UWSCではデフォルトの黄色になっていましたが、UWSCRでは黒になります。
fukidasi("背景色に0", , , 0, 30, "遊ゴシック", $FF, 0)
createform
UWSCではIEコンポーネントが使われていましたが、UWSCRではWebView2
を利用しています。そのためUWSCとは互換性がありません。
Microsoft Edge WebView2 Runtime
のインストールが必要です。通常はプリインストールされているはずですが、適切にアップデートの行われていないWindows 10には含まれていない場合があります。
戻り値
非同期フラグにより戻り値が変わります。FALSE
の場合はForm情報オブジェクト
を、TRUE
の場合はFormオブジェクト
を返します。
Form情報オブジェクト
submit
したform
に含まれる情報を示すUObject
です。
{
"submit": string, // 押されたsubmitボタンのname
"data": [ // form内の各要素のnameとそのvalueの配列
{"name": string, "value": string},
]
}
以下はコード実行例です。
<!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", FALSE, , 300, 300)
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オブジェクト
formを制御するためのオブジェクトです。wait
メソッドでユーザー入力があるまで待機します。wait
メソッドはform情報オブジェクト
を返します。
UWSCのcreateformが返していたオブジェクトとは異なるものです。UWSCのコードそのままでは動作しません。
- 例:
visible
プロパティが存在しない
formオブジェクトは呼び出されたスレッドでのみ動作します。public変数に入れて別のスレッドから呼び出した場合は動作保証外となります。
f = createform("sample.html", "Sample", TRUE, , 300, 300)
r = f.wait()
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
DOMの操作
formオブジェクト
のdocument
プロパティでformページのdocument
オブジェクトが得られます。
f = createform("sample.html", "Sample", TRUE, , 300, 300)
// documentプロパティでdocumentオブジェクトを得られる
doc = f.document
// 初期値を入力
doc.querySelector("input[name=user]").value = "stuncloud"
doc.querySelector("select").value = "bar"
f.wait()