- ベストアンサー
ラインコントロールにクリックイベント
ラインコントロールにイベントが発生しないことは分かっています。 なので、自作しないといけないのかなと思っていますが、良い方法が見つかりません。クリックイベントが発生するようなラインのユーザーコントロールの作り方を教えていただけませんか? あるいは、フォームのクリックイベントで、そこがラインコントロール上か否かという判断をさせる方法でもいいです。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
縦線や横線のラインなら簡単ですが、斜めのラインは判定が難しいですね。 最も簡単な手法はラインに特別な色をつけて、フォームクリック時にその色を 取得すればどうでしょうか。 以下のコーディングでラインコントロールをクリックした時に、 その、色をゲットできるので、後はその色番号でクリックされたとみなせばよいでしょう。 色を変えたくないなら、タンジェント等の三角関数がいるような気がします。 Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Debug.Print Point(X, Y) End Sub
その他の回答 (2)
- don_cha
- ベストアンサー率34% (139/407)
フォーム上のマウスイベントのムーブイベントでマウスカーソル位置を常に取得し、クリックイベントでターゲットのラインとマウスカーソルの位置が一致するかを判断すれば良いのではないでしょうか。 以下サンプル 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)
俺なら、ラインコントロールはあきらめて、ラベルコントロールを細くして使います。 ラベルコントロールは、リソースの消費が少ないと聞いた事あるので一番よいかと。
お礼
この場を借りて、皆さんにお礼を申し上げたいと思います。 いろいろな方法があるものですね。 質問してみてよかったです。