• ベストアンサー

クリックした場所にFormを開く

教えてください! VBでクリックした場所にFormを開くには、どうしたらいいですか? Private Sub Command3_Click() Frm.Show End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • JeanneNet
  • ベストアンサー率48% (100/208)
回答No.2

こんにちは、じゃんぬねっと です。 > いわゆるポップアップメニューのように、 > 「ボタンクリックしたとき、そのときマウスがいる場所を基点にフォームを開きたい」 > のです。 なるほど、CommandButton のクリックイベントだったので、少々勘違いしていました。 ポップアップとすると、マウス ポインタの位置を左上基点で開くということになるので、以下のような感じになるでしょう。 Option Explicit Private Declare Function GetCursorPos Lib "USER32.DLL" (ByRef lpPoint As Point) As Long Private Type Point   X As Long   Y As Long End Type Private Sub Form_Click()   Dim lpPoint As Point   Call GetCursorPos(lpPoint)   Dim frm1 As Form1   Set frm1 = New Form1   frm1.Left = lpPoint.X * Screen.TwipsPerPixelX   frm1.Top = lpPoint.Y * Screen.TwipsPerPixelY   Call frm1.Show(vbModeless, Me) End Sub

shota888
質問者

お礼

まさにやりたい動きが実現できました!! ありがとうございました!!! APIを使うんですね・・・

その他の回答 (2)

noname#185804
noname#185804
回答No.3

すみません少し確認させて下さい VBのバージョンはいくつでしょうか? マウスクリックですが、フォーム上でマウスをクリックすると 別のフォームが開く? 若しくはデスクトップなどフォーム以外の場所でマウスを クリックするとフォームが開く? 若しくは両方?

shota888
質問者

お礼

じゃんぬさまのご回答により解決することができました。 ありがとうございました。

  • JeanneNet
  • ベストアンサー率48% (100/208)
回答No.1

こんにちは、じゃんぬねっと です。 > VBでクリックした場所にFormを開くには、どうしたらいいですか? 「クリックした場所」だけですと、厳密な場所はわかりません。 よって以下のようなサンプルにしかなりませんでしたが、 これを応用して望む形にできるのではないでしょうか? Private Sub Command1_Click()   Dim frm1 As Form1   Set frm1 = New Form1   frm1.Left = Me.Command1.Left + Me.Command1.Width   frm1.Top = Me.Command1.Top + Me.Command1.Height   Call frm1.Show(vbModal, Me) End Sub

shota888
質問者

お礼

じゃんぬねっとさま 回答ありがとうございます。言葉足らずで申し訳ありませんでした。 いわゆるポップアップメニューのように、 「ボタンクリックしたとき、そのときマウスがいる場所を基点にフォームを開きたい」 のです。 Windowsの画面上の座標がわかればできそうなので・・・ 「ボタンクリックしたときのWindows画面上の位置」 を取得する方法を探しています。

関連するQ&A

専門家に質問してみよう