【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

ラインコントロールにイベントが発生しないことは分かっています。

なので、自作しないといけないのかなと思っていますが、良い方法が見つかりません。クリックイベントが発生するようなラインのユーザーコントロールの作り方を教えていただけませんか?

あるいは、フォームのクリックイベントで、そこがラインコントロール上か否かという判断をさせる方法でもいいです。

よろしくお願いします。

A 回答 (3件)

俺なら、ラインコントロールはあきらめて、ラベルコントロールを細くして使います。


ラベルコントロールは、リソースの消費が少ないと聞いた事あるので一番よいかと。
    • good
    • 0

フォーム上のマウスイベントのムーブイベントでマウスカーソル位置を常に取得し、クリックイベントでターゲットのラインとマウスカーソルの位置が一致するかを判断すれば良いのではないでしょうか。



以下サンプル

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
    • good
    • 0

縦線や横線のラインなら簡単ですが、斜めのラインは判定が難しいですね。


最も簡単な手法はラインに特別な色をつけて、フォームクリック時にその色を
取得すればどうでしょうか。
以下のコーディングでラインコントロールをクリックした時に、
その、色をゲットできるので、後はその色番号でクリックされたとみなせばよいでしょう。
色を変えたくないなら、タンジェント等の三角関数がいるような気がします。

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Debug.Print Point(X, Y)
End Sub
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/08/17 23:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!