input フィールドの戻り値について

解決


 2005-09-13 07:36:54  No: 125273  IP: [192.*.*.*]

お世話になります。inputフィールドの戻り値について教えてください。
  1:何も入力しないでOKボタンを押したときの戻り値はブランク、
  2:入力してもしなくてもキャンセルボタンを押したときの戻り値はブランク、
この2つの違いを見分けるにはどうしたらよいのでしょうか?

編集 削除
ガッ  2005-09-13 08:50:32  No: 125274  IP: [192.*.*.*]

んぅ…もしかしてVB6のInputBox?それともVB.NETのInputBox?それとも他の?
VB6のInputBoxでキャンセルを押した場合は、
vbNullStringが返ってくるという情報を聞いたことがあるけど…
.NETは良く分からない。

編集 削除
ひろ  2005-09-13 08:57:53  No: 125275  IP: [192.*.*.*]

何のinputフィールドなのか書かないと答えようが無いですが、
とりあえずVB6のInputBoxの場合はこんな感じです

(1)初期値指定が無い場合
  以下の3つを区別出来ません。

  ・何も入力せずにOKをクリック
  ・色々入力内容を編集して最終的に入力内容が空の状態でOKをクリック
  ・キャンセルをクリック

(2)初期値が空の文字列ではない場合
  以下の2つの区別が出来ません。
  ・色々入力内容を編集して最終的に入力内容が空の状態でOKをクリック
  ・キャンセルをクリック

  また、以下の2つの区別も出来ません。
  ・何も入力操作をしないでOKをクリック
  ・色々入力内容を編集して結局最終的に初期値と同じ状態でOKをクリック

どちらの動作でも意図に沿わない場合は自分で入力画面を自作しましょう。

編集 削除
ガッ  2005-09-13 09:02:19  No: 125276  IP: [192.*.*.*]

※駄レス
VB6だったら、OKとCancelの区別が付きます。

dim st as string
st=inputbox("OKかキャンセルかの区別")
if strptr(st)=0 then
  msgbox "キャンセル"
else
  msgbox st & vbnewline & "でOKを押した"
endif

編集 削除
 2005-09-13 09:19:30  No: 125277  IP: [192.*.*.*]

ガッさん、ひろさんありがとうございます。VB6で開発中なので、ガッさんの条件判断で私のやりたいことは解決しました。ありがとうございました。

編集 削除
魔界の仮面弁士  2005-09-13 09:24:08  No: 125278  IP: [192.*.*.*]

VBScriptの場合: → IsEmpty関数でチェックできます。
 キャンセルされた場合、IsEmpty()はTrueを返します。
 キャンセル時は Empty、何も入力せずにOKした場合は長さゼロの文字列です。

旧VB/VBAの場合: → StrPtr関数でチェックできます。
 キャンセルされた場合、StrPtr()は 0 を返します。
 キャンセル時は vbNullString、何も入力せずにOKした場合は長さゼロの文字列です。

VB.NETの場合: → 区別できないようです。
 キャンセルされた場合、何も入力せずにOKした場合、ともに、
 長さゼロの文字列が返されます。

編集 削除