• ベストアンサー

困り果てて,困ってます。。。

フォーム上で,次のような操作をしたいのですが…(;;) (1)一度マウスをクリックすると,そこを始点として,そこからマウスのポインタへ直線が表示され,ポインタを動かすことで,その線も一緒に動く。 (2)二度目にマウスをクリックすることによって,そこが終点となり,始点から終点までが結線される。 ※一太郎の作図モードで直線を引くときのイメージです。 なお,エクセルVBAを基本に考えているのですが,VB6での対応も検討しています。 よろしくお願いします。

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

  • ベストアンサー
回答No.1

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分もかからないで組んだプログラム。

mako314
質問者

お礼

一人で考えていても,思いつかなかったと思います。ありがとうございました。

その他の回答 (1)

回答No.2

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

mako314
質問者

お礼

ご回答ありがとうございました。参考にさせていただきます。