OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

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

  • 困ってます
  • 質問No.116864
  • 閲覧数90
  • ありがとう数1
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 69% (64/92)

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

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

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

よろしくお願いします。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル9

ベストアンサー率 30% (26/84)

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

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

お礼率 69% (64/92)

この場を借りて、皆さんにお礼を申し上げたいと思います。
いろいろな方法があるものですね。
質問してみてよかったです。
投稿日時 - 2001-08-17 23:34:45
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル9

ベストアンサー率 21% (13/60)

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


  • 回答No.2
レベル11

ベストアンサー率 34% (139/407)

フォーム上のマウスイベントのムーブイベントでマウスカーソル位置を常に取得し、クリックイベントでターゲットのラインとマウスカーソルの位置が一致するかを判断すれば良いのではないでしょうか。 以下サンプル Dim Mx As Single Dim My As Single Private Sub Form_Click()   If (Line1.X1 <= Mx And Line ...続きを読む
フォーム上のマウスイベントのムーブイベントでマウスカーソル位置を常に取得し、クリックイベントでターゲットのラインとマウスカーソルの位置が一致するかを判断すれば良いのではないでしょうか。

以下サンプル

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
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ