2011年7月4日月曜日

テキストボックスへの値の代入と値の取得

今回は、フォーム (ダイアログ) 上のテキストボックスへの値の代入と、
テキストボックスに入力された値の取得について。
  
下図のようなフォーム「Dialog1」を用意する。二つのテキストボックス名は
それぞれTextbox1、Textbox2 とする :
  
Textbox1 に値を入力し、コマンドボタンをクリックすると、先ずTextbox1
の値をメッセージボックスに表示し、続いて、Textbox2 に「Hello, World!」
の文字列を代入、という処理を例に、以下説明を行う。
  
エクセル VBA と比べると、テキストボックスに限らず、Calc のコントロール
を扱うコードは煩雑である。一般にフォーム上のコントロールを扱う為には
  
   Control 変数 = Form 変数.getControl(Control 名)
   Control 変数.Property 名
   Control 変数.Method 名
  
と、いちいち変数を宣言しなければならない。エクセル VBAの場合、
  
   Me.Control 名.Property 名
   Me.Control 名.Method 名
  
で済むのに比べると、ややこしい。テキストボックスの値の代入・取得に
ついては、
  
   Textbox 変数 = Form 変数.getControl(Textbox 名)
   文字列変数Textbox 変数.Text
   Textbox 変数.Text = 文字列
  
という具合にコードを記述していく。
  
以下に、サンプルコードを記述する。当該コードには、「Dialog1」を開く
プロシージャも、全て一つのモジュールの中に記述している。エクセル
の「Me」のような便利なモノがないので、Form 変数を複数のプロシージャ
や関数で使用する場合は、同一モジュール内にコードを記述するのが
最適と判断した為、一つのモジュールにまとめた。他にもっと良いやり方
があるのかも知れないが、思いつかなかった。
  
以下、モジュール :
  
Private mobjDialog1 As Object
  
Sub Main
       '
       'Dialog1を開く
       DialogLibraries.LoadLibrary("Standard")
       mobjDialog1 = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
       mobjDialog1.execute()
End Sub
  
Sub CommandButton1Click()
       Dim objTextbox1 As Object
       Dim objTextbox2 As Object
       objTextbox1 = mobjDialog1.getControl("Textbox1")
       '
       'Textbox1 に入力された値をメッセージボックスに表示
       Msgbox("Textbox1に入力された値は「" & objTextbox1.Text & "」")
'
'Textbox2 に「Hello, World!」を代入する。
       objTextbox2 = mobjDialog1.getControl("Textbox2")
       objTextbox2.Text = "Hello, World!"
End Sub
  
処理の結果、表示されるメッセージボックスと、処理後のフォームの状態
は下図の通り :
  

0 件のコメント:

コメントを投稿