• ベストアンサー

ラインコントロールにクリックイベント

ラインコントロールにイベントが発生しないことは分かっています。 なので、自作しないといけないのかなと思っていますが、良い方法が見つかりません。クリックイベントが発生するようなラインのユーザーコントロールの作り方を教えていただけませんか? あるいは、フォームのクリックイベントで、そこがラインコントロール上か否かという判断をさせる方法でもいいです。 よろしくお願いします。

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

  • ベストアンサー
  • VT250F
  • ベストアンサー率30% (26/84)
回答No.3

縦線や横線のラインなら簡単ですが、斜めのラインは判定が難しいですね。 最も簡単な手法はラインに特別な色をつけて、フォームクリック時にその色を 取得すればどうでしょうか。 以下のコーディングでラインコントロールをクリックした時に、 その、色をゲットできるので、後はその色番号でクリックされたとみなせばよいでしょう。 色を変えたくないなら、タンジェント等の三角関数がいるような気がします。 Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Debug.Print Point(X, Y) End Sub

g_express999
質問者

お礼

この場を借りて、皆さんにお礼を申し上げたいと思います。 いろいろな方法があるものですね。 質問してみてよかったです。

その他の回答 (2)

  • don_cha
  • ベストアンサー率34% (139/407)
回答No.2

フォーム上のマウスイベントのムーブイベントでマウスカーソル位置を常に取得し、クリックイベントでターゲットのラインとマウスカーソルの位置が一致するかを判断すれば良いのではないでしょうか。 以下サンプル Dim Mx As Single Dim My As Single Private Sub Form_Click()   If (Line1.X1 <= Mx And Line1.X2 >= Mx And Line1.Y1 <= My And Line1.Y2 >= My) Then     MsgBox "クリックされた位置がライン上です"   End If End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)   Mx = X   My = Y End Sub

  • Masato_a
  • ベストアンサー率21% (13/60)
回答No.1

俺なら、ラインコントロールはあきらめて、ラベルコントロールを細くして使います。 ラベルコントロールは、リソースの消費が少ないと聞いた事あるので一番よいかと。

関連するQ&A