1.3 2次元図形とアフィン変換(テキストボックスとコンボボックス)

1.3.3 テキストボックスとコンボボックス

 よく利用されるコントロールとして,テキストボックスとコンボボックスがあります.テキストボックスで平行移動量を,コンボボックスで回転角度を変更できるようにしてみます.ラベルによってそれぞれの内容を示します.図1.9に示すように,フォーム上にコントロールを追加します.

(図1.9)新しいフォーム

(約6Kバイト)

 

 

 ラベルの表示文字をCaptionプロパティで,それぞれ“平行移動量”,“回転角"に変更します.テキストボックスの(オブジェクト名)を“txtTranslate”,コンボボックスの(オブジェクト名)を“cmbRotation”とします.表示されているテキストが目障りなときは,Textプロパティを空白にします.これで準備完了です.

 フォームモジュールの宣言セクションに,

 Dim trans As Single '平行移動量

 Dim angle As Single '回転角

を追加します.Form_Loadイベント,cmdRotate_MouseDownイベントおよびcmdTranslateX_MouseDownイベントを変更します.また,新たにtxtTranslate_ChangeイベントおよびcmbRotation_Clickイベントを追加します.これらをリスト1.13に示します.

(リスト1.13)VB.イベントの変更と追加(frmTestCGI)

Private Sub Form_Load()

     ScaleMode = 3

     Picture1.ScaleMode  = 3 

      x0 = Picture1.Width / 2

     y0 = Picture1.Height / 2

  

  ' 初期値

     trans = 10 ' 平行移動量

     angle = 10 ' 回転角

     txtTranslate.Text = Str ( trans )

     cmbRotation.Text = Str ( angle )

     cmbRotation.AddItem "5 "

     cmbRotation.AddItem "10 "

     cmbRotation.AddItem "20"

     cmbRotation.AddItem "30 "

     cmbRotation.AddItem "45 "

End Sub

 

Private Sub cmdRotate_MouseDown( Button As Integer,_Shift As Integer ,X As Single ,Y As Single ) 

     Dim theta#

    

    If Button = 1 Then

          theta = angle

    Else

           theta = - angle

    End If

   

    Call Rotate ( theta )

    Call Draw

 End Sub

 

Private Sub cmdTranslateX_MouseDown( Button As Integer,_Shift As Integer ,X As Single ,Y As Single ) 

     Dim tx ! ty !

    

    If Button = 1 Then

          tx = trans

    Else

        tx =  - trans

    End If

   

    Call Translate ( tx ,ty )

     Call Draw

 End Sub

 

Private Sub txtTranslate_Change()

     trans = Val ( txtTranslate.Text )

End Sub

 

Private Sub cmdRotation_Click() 

     angle = Val ( cmbRotation.Text )

End Sub

 Form_Loadイベントで平行移動量と回転角の初期値を与え,それらをテキストボックスおよびコンボボックスのテキストに表示させます.コンボボックスに対してはあらかじめAddItemメソッドによって,候補値を列挙しておきます.Strは数値を文字列に,Valは文字列を数値に変換する関数です.

 なお,コンボボックスに対しては,Changeイベントではなく,Clickイベントにコーディングすることに注意してください.Changeイベントにもコーディングしておくと,テキストボックスと同じように任意の値に変更できるようになります.


Copyright 2000 酒井 幸市

新刊のご案内


Copyright 1997-2001 CQ Publishing Co.,Ltd.