アプリ独自のカーソルを表示させるには


フォーム上のテキストボックス/コンボボックスがフォーカスを取得したとき、背景色を変えてアプリ独自のカーソルを表示する方法を紹介します。ここで紹介する方法は、Form_Loadイベントから Sub SetCursor_FSをコールするだけで実現することができます。Sub SetCursor_FSは、フォーカス取得時の条件付き書式を設定して背景色を変えています。


  1. Access 2000を起動して Northwind.mdb を開きます。

  2. データベースウィンドウからフォームタブをクリックして、新規作成ボタンをクリックします。

  3. フォームウィザードを使用して図1に示すようなフォームを作成します。このフォームでは、商品テーブルをメンテします。


    図1-商品テーブルをメンテするためのフォーム作成


    メニューからコードのアイコンをクリックしてフォームモジュールを表示させ、リスト1のForm_LoadイベントのVBAコードをコピー&ペーストします。

    リスト1-Form_Loadイベントの処理
    Private Sub Form_Load()
      Call SetCursor_FS(Me)
    End Sub
    

    Form_Loadイベントでは、Sub SetCursor_FSをコールします。Sub SetCursor_FSは、フォーカス取得時の条件付き書式を設定して前景色/背景色を変更します。

    フォームをfrm条件付き書式設定その1の名称で保存したら、データベースウィンドウからモジュールタブをクリックします。新規作成のボタンをクリックしてリスト2のSub SetCursor_FSをコピー&ペーストして保存します。

    リスト2-Sub SetCursor_FS
    Public Sub SetCursor_FS(frm As Form, _
      Optional lngForeColor As Long = vbBlack, _
      Optional lngBackColor As Long = vbYellow)
      
      Dim ctl As Control
      
      For Each ctl In frm.Controls
        With ctl
          Select Case .ControlType
            Case acTextBox, acComboBox 
              .FormatConditions.Delete          
              With .FormatConditions.Add(Type:=acFieldHasFocus)            
                .ForeColor = lngForeColor
                .BackColor = lngBackColor
              End With
          End Select
        End With
      Next ctl
    
    End Sub                



  4. データベースウィンドウからフォームタブをクリックしたら、項番3で保存したフォーム(frm条件付き書式設定その1)を開きます。Tabキーを押して、黄色のカーソルが移動するか確認します。

    図2-フォーカスを取得したテキストボックス(商品コード)の背景色が黄色に変更された例

  5. フォームを閉じてAccess 2000を終了します。