Chapter4-5 ActiveXコントロールの利用

Accessには、標準でさまざまなコントロールが用意されています。しかし、フォームやレポートで利用できるコントロールは、リボン上にあるものばかりではありません。Access標準としてあらかじめ用意されていない、Accessの外部にあるコントロールを総称して「ActiveXコントロール」といいます。

Accessで利用できるコントロール



※パソコン上にあるActiveXコントロールが、すべてAccessで利用できるとは限りません。フォームに挿入はできても、実際にはデザイン変更できないものや、動作しないもの、あるいはAccess自体をフリーズさせてしまうものもあります。それがどのようなコントロールか、理解した上で使うようにしてください。



■カレンダーコントロールの利用例

Access標準ではないものの、Access(Office)のセットアップディスクには含まれており、セットアップオプションとなっているいわばAccess付属のコントロールである「カレンダーコントロール」の利用例です。

カレンダーコントロールを使うにあたっては、まず、次の要領でフォームにコントロールを貼り付けます。
  1. コントロールを配置するフォームのデザインビューを表示します

  2. リボンの[デザイン]タブより[ActiveX コントロール]をクリックします

  3. 「ActiveX コントロールの挿入」ダイアログの中から「カレンダー コントロール 12.0」を選択します


  4. [OK]ボタンをクリック → これでコントロールがフォームに挿入されます


  5. コントロールのプロパティを設定します(プロパティシート、またはマウスの右クリックで表示される[カレンダーオブジェクト]-[プロパティ]メニュー)

あとは、Access標準のコントロールと同様にプログラミングを行ないます。
コントロールによって独自のプロパティやメソッド、イベントがありますが、それについては、自動メンバ表示や、コードウィンドウの[オブジェクト]ボックス・[プロシージャ]ボックスなどで確認します


以下のプログラムは、テキストボックスへ入力する日付をカレンダーフォームから選択する例です。フォームの「OpenArgs」プロパティを利用して、さまざまなフォームから汎用的に呼び出せるようにしています。

[カレンダー]ボタンをクリック


カレンダーから日付を選択


選択した日付がテキストボックスに代入される



カレンダーフォーム側のプログラム
Private pctl As Control   '呼び出し元のコントロールオブジェクト

Private Sub Form_Load()
'読み込み時

  '現在アクティブなフォームと引数を使って対象コントロールを設定します
  Set pctl = Screen.ActiveForm(Me.OpenArgs)

  'そのコントロール値をカレンダーコントロールに初期設定します
  If Not IsNull(pctl) Then
    Me!Calendar0 = pctl
  Else
    Me!Calendar0 = Date
  End If

End Sub

Private Sub cmdCancel_Click()
'[キャンセル]ボタンクリック時

  'このフォームを閉じます
  DoCmd.Close acForm, Me.Name

End Sub

Private Sub cmdOK_Click()
'[OK]ボタンクリック時

  'カレンダーコントロールの値を呼び出し元に代入します
  pctl = Me!Calendar0

  'このフォームを閉じます
  DoCmd.Close acForm, Me.Name

End Sub

  • 「Screen.ActiveForm」は、現在アクティブなフォームオブジェクトを表すオブジェクトです。フォームの読み込み時イベントプロシージャ内ではまだカレンダーフォームはアクティブになっていませんので、このフォームを呼び出したフォームのオブジェクトが代入されます。
  • 「Me.OpenArgs」によって、このフォームが呼び出される際に指定された引数を取得できます。「Screen.ActiveForm(Me.OpenArgs)」は「frmカレンダー呼び出し!txt日付」と等価で、呼び出し元フォームの日付入力用のコントロールオブジェクトを取得することができます。
  • 「IsNull」関数は、引数がNULL(空)かどうかを返す関数です。空の場合はDate関数で今日の日付をカレンダーにセットしています。

呼び出し側フォームのプログラム
Private Sub cmdCalendar_Click()

  'fdlgカレンダーをダイアログとして開きます
  '日付を入力するコントロール名を引数として渡します
  DoCmd.OpenForm "fdlgカレンダー", , , , , acDialog, "txt日付"

End Sub

| Index | Prev | Next |

 

Copyright © T'sWare All rights reserved