ページ 11

InputBox

Posted: 2008年1月30日(水) 19:51
by TN
超初心者です。できれば分かりやすくお願いします。

VBAなどのもので使用者から数値などを入力してもらうダイアログボックスを出す方法はありますが、ActiveBasicで出す方法はありますか?

簡単に文字列や数値を入力してもらう方法でもいいのでしっていたらよろしくお願いします。

Posted: 2008年1月30日(水) 21:09
by konisi
数値を入力してもらう事が目的なら、#N88BASIC等+Input命令で十分かもしれません。

コード: 全て選択

#N88BASIC
Dim A As String,B As Double
Input "文字列を入力",A
Print "入力された文字列 = ";A
Input "数値を入力",B
Print "入力された数値 = ";B
Sleep(-1)
ダイアログを作る場合は、エディットボックス1個コマンドボタン1個からなるウインドウを作り入力して貰って、
ボタンを押した時に入力されている文字列を回収するコード(下のような)を実装すればいいと思います。

コード: 全て選択

Dim InputBox_ReturnString As String
Sub InputBox_CommandButton1_Click()
    Dim A[255] As Byte
    GetWindowText(GetDlgItem(hInputBox,EditBox1),A,255)
    InputBox_ReturnString=MakeStr(A)
    EndDialog(hInputBox,0)
End Sub

Posted: 2008年1月31日(木) 18:04
by T.N
N88BASICのほうは分かるのですが、もうひとつのほうが少し分かりません。

Dim A[255] As Byte
GetWindowText(GetDlgItem(hInputBox,EditBox1),A,255)
InputBox_ReturnString=MakeStr(A)
EndDialog(hInputBox,0)

できれば一つ一つどういうことをしているか教えてください。
エディタボックスから読み込んだり文字を表示したりするのが苦手なの
でお願いします。

Posted: 2008年1月31日(木) 20:08
by konisi
ダイアログを表示するあたりまではわかりますか?

コード: 全て選択

'ダイアログが終了した時、このString型変数に入力された文字列が格納されている。
Dim InputBox_ReturnString As String

Sub InputBox_CommandButton1_Click()

'文字を取得するためのバッファを用意
    Dim A[255] As Byte

'最大文字バイト数に255を指定して、[InputBox]の[EditBox1]から文字列をロードし、用意してあったバッファにストア。
    GetWindowText(GetDlgItem(hInputBox,EditBox1),A,255)

'取得した文字列を、String型に変換。戻り値取得用のグローバル変数に代入。
    InputBox_ReturnString=MakeStr(A)

'[InputBox]ダイアログを終了する。
    EndDialog(hInputBox,0)
End Sub

Posted: 2008年2月01日(金) 18:25
by TN
ありがとうございました。
とてもすっきりしました。

何度も悪いのですけど
Dim A[255]As Byte
とAの変数宣言したときに型はByteになってると思うのですけど
文字列が入っているきがします。(BytePtr?)

あと、これとは関係ないのですがプロジェクトでウィンドウをもうひとつ作って
ひとつのウィンドウを開いているときにもうひとつのウィンドウをひらく
(オプション画面やバージョン情報のような画面)方法を教えてください。

分かりにくくてすいません。

何度も悪いですがお願いします。

Posted: 2008年2月01日(金) 21:09
by konisi
配列とかポインタとかについて簡単に説明する事は難しくなっているのですが・・・


二番目のは、DialogBox関数を参照してください。Samplesフォルダ内のプロジェクト[TextEditor]が参考になるかもしれません。

Posted: 2008年2月03日(日) 18:43
by TN
回答ありがとうございました。

ウィンドウ系は苦手なのでこれからも勉強したいと思います。

ありがとうございました