• 解説

    帳票フォームでコントロールをダブルクリックした場合や、ボタンをクリックした場合に、ポップアップウィンドウを表示することはよくあると思います。
    この時、フォーカスのあるコントロールを基点とするようなポップアップウィンドウを表示したくなってしまった場合、そのコントロールの座標を知る必要があります。

    Accessのコントロールは表示されているときはただの絵(VBなど多言語と違いウィンドウではない)で、フォーカスが移ってきた段階で実体化(ウィンドウを持つ)します。
    この時、ウィンドウハンドルを取得できるようになりますのでAPIを使用して座標を取得します。

  • 手順

    1. 下記のAPIを定義します。

      GetDC
      GetDeviceCaps
      GetFocus
      GetWindowRect
      ReleaseDC
      
    2. GetFocusでウィンドウハンドルを取得します。
    3. [No.2]で取得したウィンドウハンドルをGetWindowRectに渡しウィンドウの座標を取得します。
    4. [No.2]で取得したウィンドウハンドルをGetDCに渡しデバイスコンテキストハンドルを取得します。
    5. [No.4]で取得したデバイスコンテキストハンドルをGetDeviceCapsに渡しPixelからTwipに変換するための値を取得します。
    6. [No.5]で取得した値を元に座標を計算します。
    7. [No.4]で取得したデバイスコンテキストハンドルをReleaseDCに渡しハンドルを閉じます。
  • その他

    AccessのVBAおよびAPIの知識が必要です。

説明がわからないなどありましたらお問い合わせでお知らせください。

ここに掲載された情報を使用したことによって発生した、いかなる損害に対しても
管理者である雅は一切責任を負いません。