- ベストアンサー
困り果てて,困ってます。。。
フォーム上で,次のような操作をしたいのですが…(;;) (1)一度マウスをクリックすると,そこを始点として,そこからマウスのポインタへ直線が表示され,ポインタを動かすことで,その線も一緒に動く。 (2)二度目にマウスをクリックすることによって,そこが終点となり,始点から終点までが結線される。 ※一太郎の作図モードで直線を引くときのイメージです。 なお,エクセルVBAを基本に考えているのですが,VB6での対応も検討しています。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Private M_on As Boolean Private Sub Form_Load() M_on = False Line1.Visible = False Me.AutoRedraw = True End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) M_on = True Line1.Visible = True Line1.X1 = X Line1.Y1 = Y Line1.X2 = X Line1.Y2 = Y End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If M_on = True Then Line1.X2 = X Line1.Y2 = Y End If End Sub Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) M_on = False Line1.Visible = False Me.Line (Line1.X1, Line1.Y1)-(Line1.X2, Line1.Y2), RGB(255, 0, 0) End Sub フォームを一つとLINEコントロールを一つ ドラック&ドロップでのプログラム 10分もかからないで組んだプログラム。
その他の回答 (1)
- pen_pen_pen
- ベストアンサー率65% (52/79)
VBAにLineなさそう? という訳でVB6で考えてみました。 フォームにLineコントロール(名前はLine1)を置いて下さい。 フォームモジュールに以下をコピーして実行してください。 Lineは1つを使いまわすように作ってます。 ホントはいくつも線は描くんでしょうね。。。 Private blStart As Boolean Private Sub Form_Load() Line1.Visible = False blStart = False End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Line1.Visible = False Line1.X1 = X Line1.Y1 = Y blStart = True End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If blStart Then Line1.X2 = X Line1.Y2 = Y Line1.Visible = True End If End Sub Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) blStart = False End Sub
お礼
ご回答ありがとうございました。参考にさせていただきます。
お礼
一人で考えていても,思いつかなかったと思います。ありがとうございました。