• 締切済み

mouse dowunイベントについて

VB6.0 MouseDowunイベントについて質問です。 ピクチャーボックスをクリックした場合 ピクチャーボックス領域の上半分をクリックしたら フォーム表示位置を上移動、下半分だったら下移動という処理を行っています。 しかし、現状ではチェックボックスなどのその他コントロールを操作している際に すこしでもクリック位置がずれると表示位置が移動してしまう誤作動が起こってしまいます。 これを防止するためにクリックではなくダブルクリックで対応したいのですが マウスダウンイベントでダブルクリックを対応させることは可能ですか? Private Sub Picture2_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) If Form1.ScaleHeight / 2 - y < 0 Then Picture2.Top = Form1.ScaleHeight / 2 - y If Picture2.Top < -VScroll1.Max Then Picture2.Top = -VScroll1.Max End If Else Picture2.Top = 0 End If End Sub

みんなの回答

noname#22222
noname#22222
回答No.2

ピクチャーボックス領域の上半分をクリックしたらピクチャーボックスのトップをフォームトップにアジャスト。 下半分をクリックしたら、ピクチャーボックスをフォームのボトムにくっつける。 という質問であれば、 Option Explicit Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)   Const BarWidth = 530   Dim isUpper     As Boolean   Dim lngFormHeight  As Long   Dim lngPictureHeight As Long      lngFormHeight = Form1.Height   lngPictureHeight = Picture1.Height   isUpper = Y < (lngPictureHeight / 2)   If isUpper Then     Picture1.Top = 0   Else     Picture1.Top = lngFormHeight - lngPictureHeight - BarWidth   End If End Sub ※質問の解釈が間違っていたらゴミとして無視して下さい。

回答No.1

KeyDown イベントについての質問の方はどうなったでしょうか? 回答がついていますよ。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1965642 で、ダブルクリックの処理はダブルクリックのイベントに実装すればいいんじゃないですか? なぜ無理やり MouseDown イベントを使おうとするのか良くわかりません。 VB 6.0 は何年も触っていないのでダブルクリック イベントが存在するかどうか覚えてませんが。 なければクリック イベントを利用して自力でダブルクリックイベントを実装するとか。 クリック イベントの中で、 以前クリックされた時の時刻と今の時刻を比べ、ある間隔以内であればダブルクリックとみなす。 とか。 というかもっと簡単な方法で解決した方が良いんじゃないでしょうか・・・ 問題は「コントロールが多すぎて(または大きくて)フォームからはみ出してしまう」ですよね? タブ ページ コントロール(名前は自信なし)のようなコントロールでページわけするとか。 またはポップアップする別フォームを使うとか。

関連するQ&A

  • フォーカスの制御

    VB6.0について質問です。 現在フォームが大きいのでピクチャーにスクロールバーをつけて対応しています。 それにフォーム上をクリックすることでも上下の移動を可能にしています。 しかし入力中(テキストボックス等)に誤ってフォームをクリックしてしまうと フォーカスがピクチャーに移ってしまいます。 TabStopプロパティをEnableにしても変わりません; どのようにしたらフォーカスが固定できますか? 現在のコードは以下のようになっています。 Picture1.TabStop = False If Form.ScaleHeight / 2 - Y < 0 Then Picture1.Top = Form.ScaleHeight / 2 - Y If Picture1.Top < -14500 Then Picture1.Top = -14500 End If Else Picture2.Top = 0 End If

  • 右クリックイベント

    Windows XP、Access2000での開発で、サブフォーム上のテキストボックスを右リックすると (普通のクリックではなく、あえて右クリック)、 別のフォームが表示される処理を作ろうとしています。 VBAのコードを Private Sub テキストボックス名_mousedown(Button As Integer, Shift As Integer, X As Single, Y As Single)  If Button = acRightButton Then  DoCmd.OpenForm "フォーム名"  End If End Sub としているのですが、これだとマウスを離してしまうと、画面が閉じてしまいます。 普通のクリックでのイベントと同じように、右クリックで別のフォームを表示するにはどうしたらよいでしょうか? 初心者です。 どなたか分かる方教えてください!!

  • 実行時のコントロール移動について

    実行時にデザイン時と同じようにコントロール移動をおこないたいのですが、コードを忘れてしまいました。もしご存知の方ご教授お願いします。下記にしめしたものが少しだけ覚えているものです。したがってうまく起動できていません。よろしくお願いしたいます。VB6です。w2k Private Sub cmd_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) x1 = X y1 = Y End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 Then cmd.Left = (X - x1) + x1 cmd.Top = (Y - y1) + y1 End If End Sub

  • VB6 ドラッグ&ドロップ

    Image1をPicture1(正方形)にドラッグ&ドロップするプログラム を作りたいと思っています。 このプログラムだとImage1全体がドラッグされるのではなく、 Image1の絵はその位置に残ってImage1の外枠だけがドラッグされてしまいます。 外枠だけでなくImage1の絵も一緒にドラッグできるようにするにはどうすればいいのでしょうか? また、このプログラムだとドロップする場所(Picture1_)以外で ドロップしてしまった場合でも画面上からImage1の絵と外枠が消えてしまいます。 ドロップする場所(Picture1_)以外でドロップしてしまった場合は、 Image1全体を画面上に残しておきたいのですがどうすればいいのでしょうか? Option Explicit Dim dx As Single, dy As Single Private Sub Form_Load() Image1.Picture = LoadPicture(App.Path & "picture.jpg") Image1.Stretch = True End Sub Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single) Source.Move X - dx, Y - dy End Sub Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y As Single) Image1.Drag 1 dx = X: dy = Y 'マウスダウン位置 End Sub Private Sub Picture1_DragDrop(Source As Control, X As Single, Y As Single) Source.Visible = False 'ドロップオブジェクトを非表示にする Picture1.BackColor = RGB(255, 255, 255) End Sub Private Sub Picture1_DragOver(Source As Control, X As Single, Y As Single, _ State As Integer) If State = 0 Then Picture1.BackColor = RGB(0, 0, 255) If State = 1 Then Picture1.BackColor = RGB(255, 255, 255) End Sub

  • テキストボックス上でのショートカットメニューを無効にしたい

    テキストボックス上で、右クリックをすると、クリップ ボードにある文字列をテキストボックスにペーストする ということをしたいのですが、右クリックを押すと ショートカットメニューが開いてしまいます。 (下記コード参照)ショートカットメニューを無効に する方法はあるでしょうか? Private Sub Text1_MouseDown(Index As _ Integer,Button As Integer,Shift As _ Integer, X As Single, Y As Single) With Text1 If Button = vbRightButton Then If Clipboard.GetText <> "" Then .SelText = Clipboard.GetText End If End If End With End Sub VB6を使用してます。

  • 「右クリック でドラッグ&ドロップ」で縦横の移動できるようにしたいです。

    お世話になります。 VB6で質問です。   form [ 1000*1000 ] << A picturebox [300*300 ] << B [A]の真中に[B]を配置して、[B]を「右クリック でドラッグ&ドロップ」で縦横の移動できるようにしたいです。 下記のようにしたところ、マウスのみで動いてしまい「右クリック」が関連しません。 Private Sub picturebox_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)  picturebox.Top = Y End Sub  この場合のプログラムを教えて欲しいです。

  • マウスが触れるとテキストを表示し離れる非表示にする

    アクセスです。 フォームにラベルを設置して、 そのラベルにマウスが触れたらテキストボックスを表示させたいのです。 フォームのオープンイベントは Private Sub Form_Open(Cancel As Integer) Me.テキスト2.Visible = False End Sub になっています。 ラベルのマウスボタン解放時イベントで Private Sub ラベル0_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Me.テキスト2.Visible = True End Sub にして、ラベルをクリックするとテキストボックスが表示されます。 マウスボタン移動時イベントで Private Sub ラベル0_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Me.テキスト2.Visible = True End Sub にすると、理想通りラベルからマウスが触れたらテキストボックスが表示されます。 ここまではいいのですが マウスのカーソルが離れたら またテキストボックスを非表示にしたいのですがどうすればいいですか?

  • 【Excel VBA】コマンドボタンの選択&移動

    Excel2003を使用しています。 以前、こちらで教えていただいて、1クリックで1ページ分移動するコマンドボタンを作成しました。 左クリックでDown、右クリックでUpし、Sheet2モジュールに下記のコードを記述しています。 このコマンドボタン自体を選択して、現在配置している場所(セル上)から移動させたい場合、どのように操作すればいいでしょうか? 右クリック、左クリック両方にページ移動が設定されているため、コマンドボタン自体を選択することができません…。 マクロが動作しないよう、一旦、コードを削除して、ボタンをクリックしてみたのですが、選択状態になりませんでした。 よろしくお願いします。 ------------------------------------------------------- Private Sub CommandButton1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)  '左クリック-進む-Down  '右クリック-戻る-Up   CommandButton1.Caption = "左-Down, 右-Up"   Dim WinTop As Long   Dim i As Long   i = Int((ActiveCell.Row) / 26) + 1   If Button = 1 Then     Application.Goto Cells(i * 26 + 1, 1), True   ElseIf Button = 2 Then     If i > 1 Then       Application.Goto Cells((i - 2) * 26 + 1, 1), True     End If   End If    WinTop = ActiveWindow.VisibleRange.Top + 2 '(2は縦の位置調整)    CommandButton1.Top = WinTop End Sub

  • VB6 Form内のDragDrop

    VB6でForm内にCommandButtonがいくつか有ります。 各CommandButtonはClickするとShellオブジェクトでファイルを開く様になっています。 やりたいことは 2つのCommandButton間をDragDrop?によりCaptionを入れ替えたいです。 (CommandButton間をマウスDragDropでCaption名入れ替え) MouseDownとDragDropイベントで何とかなると思いましたがうまくいきません。 Dim dd As Integer Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = vbLeftButton Then dd = 1 'CommandボタンNo, End If End Sub Private Sub Command2_DragDrop(Source As Control, X As Single, Y As Single) Dim cn As String cn = Command2.Caption Command2.Caption = Controls("Command" & dd).Caption Controls("Command" & dd).Caption = cn End Sub CommandButtonプロパティでDragModeを自動にするとShellオブジェクトでファイルが開かないし サイトで調べたところファイルの移動やコマンド自体の移動などで分かりませんでした。 ご教授お願い致します。

  • エクセル2010のvbaについて

    押されたコマンドボタンの名前を取得したいです (調べてみましたがエラーになり取得できませんでした) 後コマンドボタンがたくさんあり、コードも長く とても邪魔なので省略したいのですができますか? (左クリックと右クリックで違う処理をした後       MouseDown コマンドボタンの名前で少し処理を変えるコードです) MouseUp (下のコードのような感じです) 回答お願いします Private Sub CommandButton1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single) Select Case Button Case 1 Range("A1") = 1 Case 2 Range("A1") = 2 End Select End Sub Private Sub CommandButton1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single) If (コマンドボタンの名前を取得) = "aaa" Then Range("A1") = Range("A1") + 1 Else Range("A1") = Range("A1") - 1 End If End Sub