---- Support BBS ----
[ 前の記事 | 次の記事 | 一覧 ]

[00601] 1514 byte
投稿日時: 2002年4月2日(火) 20時59分34秒
ホスト名: PPPa766.osaka-ip.dti.ne.jp(61.195.13.16)

Re: 要望

投稿者: 杉浦 まさき
e-mail: (入力されていません)
   URL: (入力されていません)

どうもです。

> 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 ----