コンニチワ
VBでフォームに配置したコントロールを
ドラック可能にして
フォーム上でドラック&ドロップを
検出してドラック前の位置から
ドロップ後の位置にコントロールを
移動させたいのですが
どうしてもずれたりして
上手く配置されません
どなたか同じようなことをやったことがある方
ベストなやり方
わかる方教えて下さい
よろしくお願いします

A 回答 (2件)

ちは。


Formにコントロールを張付けて以下のコードで実行すればOKです。
-----------------------------------------
Option Explicit

Dim Drg As Boolean'ドラッギングフラグ
Dim DrX As Single, DrY As Single'位置情報

Private Sub Image1_MouseDown(Button As Integer, ShiftState As Integer, x As Single, y As Single)
If Button = 1 Then
If Drg = False Then
Drg = True
DrX = x: DrY = y
Image1.ZOrder 0
End If
End If
End Sub

Private Sub Image1_MouseMove(Button As Integer, ShiftState As Integer, x As Single, y As Single)
Dim XX As Single, YY As Single

If Button = 1 Then
If Drg Then
XX = Image1.Left + x - DrX
YY = Image1.Top + y - DrY
Image1.Move XX, YY
End If
End If
End Sub

Private Sub Image1_MouseUp(Button As Integer, ShiftState As Integer, x As Single, y As Single)
Drg = False
End Sub
------------------------------------------------
じゃ、そゆことで。
    • good
    • 0

こんにちは。


最近 VB を触っていないのですが、ドラッグ開始のタイミングを MouseDown でおこなっているのなら、ドラッグ開始時点のコントロール内のマウス座標が得られるはずです。それを、ドロップ時の座標から引けばいいと思います。
(ドロップされたx座標-ドラッグ時のx座標, ドロップされたy座標-ドラッグ時のy座標) に動かせばいいのでは。

ただし、ドラッグ対象のコントロールと、ドロップされるコンテナの座標系が異なる場合には、適切な変換が必要だと思います。
    • good
    • 0

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q[VB6.0]フォーム上に配置したコントロールのフォントサイズが変えられない

はじめまして。
VB6.0のアプリケーションウィザードを使用してフォームをいくつか作りました。
ウィザード終了後、これらのフォーム上に配置されたラベルなどのfontプロパティ
を操作してフォントサイズを変えたいのです。フォームのデザイン上はフォントサ
イズを変えることが出来るのですが、実行すると、"コントロールのfontプロパティ
のfontサイズ"ではなく、"フォームのfontプロパティのfontサイズ"で統一されて
しまいます。つまり、コントロール毎の値は無視されて、フォームの値で統一され
てしまうのです。
exe形式にコンパイルしても同じでした。どこかしらのプロパティをいじるのだと
思うのですが、どなたかわかる方はいらっしゃいますか?
よろしくお願いします。
(環境)Windows98SE+VB6.0+SP5.0

Aベストアンサー

原因はわからないので根本的な解決にはならないのですが
フォームの起動時等(Form_Activate等)で
ラベルのプロパティをセットしてみてはいかがですか?

Label1.FontSize = ??

Qフォームサイズ変更時のコントロール位置について

OS:WindowsXP Pro SP2
VB:6.0 SP6

はじめまして。
VBで開発を行っているのですが
フォームのサイズ変更をした時、コントロールの位置に困っています。
最大化した時などは端にコントロールが寄ってしまい見た目が大変悪いです。
フォームサイズの変更時にコントロールも任意の位置に移動する方法はどのようにすれば良いのでしょうか?
ご存知の方ご教示宜しくお願いいたします。

Aベストアンサー

VBAにはアンカーなどがついていないのでその都度再配置しかないです。
具体的にはformのresizeイベントに、フォームの幅や高さなどから割合を出してボタンのLeftやTopを指定します。

Qタブコントロールを含んだフォームのスクロール位置

フォームの中にタブコントロールを入れ、その中にさらにフォームを入れ込んであります。

タブをクリックすると、タブ内のフォームの中のサブフォームにフォーカスが行ってしまうので
メインフォームの中にある「見積番号」のフィールドにフォーカスが行くように
下記のVBAを書いてみたのですが、うまくフォーカスが行きません。

何が原因なのでしょうか。

----------------------------
Private Sub パターン1_Click()
Forms!F_C_1_☆新規作成_パターン.SetFocus
Forms!F_C_1_☆新規作成_パターン!見積番号.SetFocus
End Sub

Aベストアンサー

>タブをクリックすると、タブ内のフォームの中のサブフォームにフォーカスが行ってしまうので
サブフォームの、プロパティのタブストップを「いいえ」にするだけで十分では?

QVB6 クラスによるフォームコントロール操作。

お世話になってます。
初歩的な質問でしたら申し訳ありません。

現在 Visual Basic を学習しています。
データベース操作用のクラスを作り、
データベース処理の間、呼び出し元の任意のフォームに配置した
プログレスバーに経過を表示したいと思っています。

そこでこのようなプログラムを書きました。

■呼び出し元フォーム ----------------------------
Dim oDB As New AccessDB

Private Sub Button_Click()
  ' myProgressBar : Meに配置したプログレスバー
  oDB.CreateMDB("hoge.mdb", myProgressBar) ' (1)
End Sub

■データベース操作用クラス(AccessDB) ------------
Public Sub CreateMDB(strFile As String, pProgress As ProgressBar)
  pProgressBar.Max = 100

   処理

End Sub

myProgressBar と、DB操作クラスの引数で宣言される
pProgress はポインタとして渡せるのではないかという概念です。
しかし実行すると、(1)の呼び出しで構文エラーが出てしまいます。
このようにコントロールを渡す場合には、
どのようにすればよいのでしょうか。

お世話になってます。
初歩的な質問でしたら申し訳ありません。

現在 Visual Basic を学習しています。
データベース操作用のクラスを作り、
データベース処理の間、呼び出し元の任意のフォームに配置した
プログレスバーに経過を表示したいと思っています。

そこでこのようなプログラムを書きました。

■呼び出し元フォーム ----------------------------
Dim oDB As New AccessDB

Private Sub Button_Click()
  ' myProgressBar : Meに配置したプログレスバー
  oDB.CreateMDB("hoge.mdb"...続きを読む

Aベストアンサー

単に、
oDB.CreateMDB "hoge.mdb", myProgressBar
にすればいいかと思います。
()をつけると一般にfunction 呼びだしに解釈されます。
Call oDB.CreateMDB("hoge.mdb", myProgressBar)
の様に、頭にCallを付ければ()を付けても大丈夫です。

QVBAでフォームのコントロールの配置を変更したい

いつもお世話になっています。
VBAでフォームに配置した20個程度のコントロール(ラベル)をユーザーが自由に変更するにはどのようなプログラムを書けばよいのかわかりません。
配置は、エディタで固定して使わせるのではなく、ユーザーがフォーム上で自由にコンロトロールの配置を行ってレイアウトできるようにしたのですが、適当なイベントドリブンが見つかりません。
マウスダウンやマウスムーブなどのイベントを組み合わせることでできそうな気もするのですが1週間ほど悩んでも名案がうかびません。
目指すのは、「レイアウト変更」ボタンを押すと、変更モードになって、コントロールをドラッグしながら好きな位置へもっていけるというものです。
よろしくお願いします。

Aベストアンサー

どこかで見たような・・・。
hatena師匠のサイトでした。
http://hatenachips.blog34.fc2.com/blog-entry-159.html
実装したことはありませんが参考になるかと思います。


このカテゴリの人気Q&Aランキング

おすすめ情報