---- Support BBS ----
[00601] 1514 byte
投稿日時: 2002年4月2日(火) 20時59分34秒
ホスト名: PPPa766.osaka-ip.dti.ne.jp(61.195.13.16)
Re: 要望
どうもです。
> textコントロールで数字以外の入力を拒否するオプションを
> 追加していただきたいのですが、可能でしょうか?
う?ん、内部的に処理できないことはないんですが、
以下のようにすればマクロ側で対処可能です。
#ちなみに、edit コントロールの間違いですよね?
#n = dllfunc("NEWDIALOG", ...);
#n = dllfunc("NEWCONTROL", "edit", "num_edit", "0");
// エディットボックスの内容が変更された時の通知コードを設定
#n = dllfunc("SETCTRLNOTIFY", "", "10");
#n = dllfunc("NEWCONTROL", "okcancel", "", "");
#n = dllfunc("SHOWDIALOG", 0, 1);
// 入力された数値を記憶しておくための変数
$org_str = "0";
$notify = "";
while (1) {
while ($notify == "") $notify = dllfuncstr("WAITCTRLNOTIFY", 10);
if ($notify == "1" || $notify == "0") {
break; // [OK] または [キャンセル] でループを抜ける
} else if ($notify == "10") {
// エディットボックスの内容が変更された
$str = dllfuncstr("GETCTRLSTRING", "num_edit");
call check_str $str; // 入力内容をチェック
if (##return == 0) { // 不正な文字が入力された
#n = dllfunc("SHOWMESSAGE", "999", "数値以外の文字を入力しないで下さい");
#n = dllfunc("SETCTRLSTRING", "num_edit", $org_str);
} else { // 入力内容を記憶
$org_str = $str;
}
}
}
#n = dllfunc("ENDDIALOG");
// ... (略)
endmacro;
// 文字列が 0 ? 9 の数値だけからできているかどうかのチェックルーチン
check_str:
##len = strlen($$1);
##a = 0;
while (##a < ##len) {
if (strstr("0123456789", midstr($$1, ##a, 1)) == -1) return 0;
##a = ##a + 1;
}
return 1;
<599> 要望 (ops) 04/02 09:03
└>601< Re: 要望 (杉浦 まさき) 04/02 20:59
---- Support BBS ----