VB.NETについて質問です。
ListViewでドラッグ&ドロップするコーディングをしているのですが、
外からListViewへのドラッグ&ドロップ(データ取り込み)、ListViewから外へのドラッグ&ドロップ(データ出力)、ListView内でのドラッグ&ドロップ(アイテム並べ替え)を区別する方法を教えて下さい。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

質問を読んで思いついたレベルで書きます。



ドラッグの開始が自分のアプリか外部のアプリか、はMouseDownでフラグ立てるようにすれば分かります。
出力or移動の場合はおそらくMouseDownでDoDragDropを呼び出しているはずなので…。

ListViewのDragOver/DragDropでは、そのフラグで判断すれば外部からの取り込みか移動かの判断はつきます。
あるいは、ドラッグ開始時に独自のデータ型を含めることができれば、フラグなしでも判別できるでしょう。

問題は出力と移動の判別ですが、ドラッグの完了がコントロール内なら移動、コントロール外なら出力として判断する方法があります。
ただ、移動のドラッグ中はリアルタイムにリストを変動させる場合は厄介ですが・・・。

(思いついただけでコード検証はしていません)
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

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

QViewのカラムの長さが不明?

はじめまして。Viewについての質問です。

とあるViewを作成し、Number型のカラムの長さを調べた所なにも表示されておらず、わからない状態になってしまいました。
元のTableのNumber型のカラムには(10,0)がセットされており同じTableを参照している別のViewには正しく(10,0)と表示されています。

カラムの長さが表示されないViewは分析関数、インラインビュー、UNIONなどを使用しているのでそれらが邪魔をしてカラムが取得できないようになってしまったのでしょうか?

こう言ったケースは初めてなので分かる方いらっしゃいましたら教えてください。

以上です。よろしくお願いします。

Aベストアンサー

NUMBER型のスケール(精度)については、不明になります。

例えば、SCOTT.EMPのEMPNOは、NUMBER(4)ですが、
CREATE VIEW V_EMP(EMPNO) AS SELECT EMPNO+0 FROM EMP;
としただけで、V_EMPのEMPNOは、桁数不明です。
(オラクルの属性追跡の限界なんでしょう)

Qフォームの外にドラッグ&ドロップ

現在、VB2005においてアプリケーションを開発しています。

よく、リストボックスなどにドラッグ&ドロップしてパスを入力させる
方法がありますが、これの逆?をやりたいと思っております。

つまり、「すでにリストボックスなどに入力されたアイテムをフォームのそと
にドラッグ&ドロップさせた場合にリストボックスからそのアイテムを
さくじょする」という動作です。

フォームの外であることをどのように判断してよいかわからないため、
MouseUp,DragDropのイベントを受け取ることができません。

よろしくお願いします。

Aベストアンサー

QueryContinueDragイベントで対応ってことになりそうですよ

フォームレベルにどのアイテムをDragしたのかを保存しておく変数を用意します
Dim nItem as integer

Drag開始時に
nItem = ListBox1.SelectedIndex
といった感じで...

QueryContinueDragイベントで
if e.Action = DragAction.Drop then
Dim pt As Point = ListBox1.PointToClient(ListBox1.MousePosition)
' ListBox1以外でドロップされた場合
' フォーム以外ならListBox1をForm1などに置き換えてください
if ListBox1.ClientRectangle.Contains(pt)=False then
ListBox1.Items.RemoveAt( nItem )
end if
end if

といった具合でしょう ...

QOracle内で作成したFunction、Viewの紐付け一覧

Oracle内のFunctionから別のFunctionやViewを使用している親子関連を調べたいのですが、
ファイル数が多すぎて全てのソースを解読して調べる時間がありません。

どなたか、親子関係の情報を出力させるコマンドかフリーソフトをご存知ありませんか。

Aベストアンサー

ALL_DEPENDENCIESデータディクショナリビューを使ってみてはどうでしょうか?

select NAME,TYPE,REFERENCED_NAME,REFERENCED_TYPE
from ALL_DEPENDENCIES
order by name

調べたいオブジェクトをnameで条件付けすれば調べたいファンクションの依存を調べられます。

Q実行ファイルへのドラッグ&ドロップ起動

VB6 WindowsXP
実行ファイルにファイルをドラッグ&ドロップして起動します。

Private Sub Form_Load()
Dim FILE_NAME As String
Dim EXE_PATH As String
FILE_NAME = Mid(Command, 2, Len(Command) - 2)
EXE_PATH = '**********
End Sub

ファイルの名前・パスは取得できるのですが、実行ファイルのパスが取得できずに困っています。
実行ファイルを通常起動した場合はCurDirで取得できますが、ドラッグ&ドロップ起動をした場合、CurDirではログインユーザーディレクトリを返してしまいます。
宜しくお願いします。

Aベストアンサー

App.Path

QHow to import HorizontalGridView in android studio

android開発初心者です。環境は android studio、API 23です。
(Visual StudioでのC#, C++開発経験はある程度あります。)

横方向にスルロールするGridViewを使用したいので、HorizontalGridViewを検討しています。
ですが、Support Library rev23.1.1をチェックしてもHorizontalGridViewの文字列が赤くなり、クラスとして認識されません。
使用するためにはほかに何か設定があるのでしょうか?
ご回答お願いします。

Aベストアンサー

minimum sdk を 17(Android 4.2)以上にして
learnback-v17 をライブラリに加えてください。

後者の手順は [File]→[Project Structure]→[モジュール名(たいていapp)] で [dependencies] タブを選ぶ
右肩の[+]ボタンを押して [Library Dependency] で表示されるダイアログで leanback-v17 を選ぶ。

以上は、Google のリファレンスを引けばわかります。

QVB6 ドラッグ&ドロップ

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

Image1をPicture1(正方形)にドラッグ&ドロップするプログラム
を作りたいと思っています。


このプログラムだとImage1全体がドラッグされるのではなく、
Image1の絵はその位置に残ってImage1の外枠だけがドラッグされてしまいます。

外枠だけでなくImage1の絵も一緒にドラッグできるようにするにはどうすればいいのでしょうか?


また、このプログラムだとドロップする場所(Picture1_)以外で
ドロップしてしまった場合でも画面上からImage1の絵と外枠が消えてしまいます。

ドロップする場所...続きを読む

Aベストアンサー

Dim dx As Single, dy As Single
↑の使用目的がわからないので削除しました。

Option Explicit

Private Sub Form_Load()
Image1.Stretch = True
Image1.Picture = LoadPicture(App.Path & "picture.jpg")
End Sub

Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
Image1.Drag 1
End Sub

Private Sub Picture1_DragDrop(Source As Control, X As Single, Y As Single)
Source.Visible = False 'ドロップオブジェクトを非表示にする
Picture1.BackColor = RGB(255, 255, 255)
Picture1.Picture = Source.Picture
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)
Picture1.Refresh
End Sub

Dim dx As Single, dy As Single
↑の使用目的がわからないので削除しました。

Option Explicit

Private Sub Form_Load()
Image1.Stretch = True
Image1.Picture = LoadPicture(App.Path & "picture.jpg")
End Sub

Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
Image1.Drag 1
End Sub

Private Sub Picture1_DragDrop(Source As Control, X As Single, Y As Single)
Source.Visible = False 'ドロップオブジェクトを非表示にする
Picture1...続きを読む

QViewGroup.LayoutParamsクラス

Androidで「ViewGroup.LayoutParamsクラス」と「ViewGroupクラス」の関係について教えてください

・継承については、下記のような関係になっていると思うのですが、この時、「ViewGroup.LayoutParamsクラス」と「ViewGroupクラス」はどこで繋がっているのでしょうか?

ViewGroup.LayoutParams < Object
・ViewGroup.LayoutParams extends Object

ViewGroup < View < Object
・ViewGroup extends View
・View extends Object

・「ViewGroup.LayoutParamsクラス」は、確か「ViewGroupクラス」でも利用できたかと思うのですが
・「ViewGroup.LayoutParams」この書き方自体に何か特別な意味があるのでしょうか?

Aベストアンサー

http://grepcode.com/snapshot/repository.grepcode.com/java/ext/com.google.android/android/4.2.2_r1/ から、
android-4.2.2_r1-sources.jar をダウンロードして、grep
対象はandroid.*以下

>・「A.B」というクラス名だけど、「ネストではない普通のクラス」はあり得る?
命名規則上混乱してしまいます。と言いたいところですが、いくつか検索してみます。

LayoutParamsクラス15クラスに関して言えばありません。
他にもA.Bとなっているクラスはあると思います。いくつか見てみます。一つ一つソースを読んでいるわけではもちろんなく、ソースに検索を掛けているだけなので、厳密に言えるわけではありませんが、参考までになります。

xxx.Engine 2クラス 全てネスト
xxx.Sessionクラス 2クラス 全てネスト
xxx.Callbackクラス 4クラス 全てネスト
xxx.Event 2クラス 全てネスト
リスナを定義するインタフェース(interface XxxxxListener) 約150 ネストでないインタフェースが11個ありますが、名前の重複はありません。

個別に検索する必要があるのでいくつか検索してみましたが、検索した範囲では、ネストでない定義かつ、名前の重複はありませんでした。

>「Hoge」クラスではない他のクラスの「ネストクラス」である可能性はあるでしょうか?
ざっくり言うと、Foo.LayoutParamsクラス、Bar.LayourParamsクラス両方定義される場合があります。この場合、FooクラスのインスタンスからBar.LayoutParamsは利用してはなりません。

しっかり言うと、クラスドキュメントを確認して、クラスの親子関係をしっかり確認する必要があります。

http://grepcode.com/snapshot/repository.grepcode.com/java/ext/com.google.android/android/4.2.2_r1/ から、
android-4.2.2_r1-sources.jar をダウンロードして、grep
対象はandroid.*以下

>・「A.B」というクラス名だけど、「ネストではない普通のクラス」はあり得る?
命名規則上混乱してしまいます。と言いたいところですが、いくつか検索してみます。

LayoutParamsクラス15クラスに関して言えばありません。
他にもA.Bとなっているクラスはあると思います。いくつか見てみます。一つ一つソースを読ん...続きを読む

Qドラッグ&ドロップからの取得

VBで作ったソフトのアイコンにテキストファイルをドラッグ&ドロップするだけでVBの中のTextboxにテキストファイルの内容を表示させたいのですがその方法が分かりません…。
やはりWindowsのAPIとかいうのを使うのでしょうか?

どなたか分かる方おられたら方法を教えて下さい。
お願いします。

Aベストアンサー

ドラッグ&ドロップされたファイル名はCommandで取れます。
最初に開く画面のForm_Loadに以下のようなことを書けばいいと思います。
If Command <> "" Then
テキストボックスに展開
End If

個人的にはテキストボックスよりもリッチテキストのほうをオススメします。
テキストボックスは表示可能文字数が少なかったような記憶が…。
ちなみにリッチテキストだと
 RichTextBox1.LoadFile ファイル名
とか
 RichTextBox1.FileName = Command
といった記述が可能で楽です。コントロールボックスのコンポーネントで
「Microsoft Rich Textbox Control」を探してみては。

QGridviewとDataGridviewの違い

visual web developer2010を使用して
社内用の簡単なwebアプリケーションを作成しています。

DataGridViewとGridViewの違いは
やっとのことでなんとなく分かったのですが
(GridViewはDataGridViewの進化版?)

自分のやりたいことをネットで検索してコードを探すと
そのほとんどがDataGridViewを使用したものです。

Clipboard.SetDataObject(DataGridView1.GetClipboardContent())

たとえば上記のような感じです。

これをGridViewで使えるようにしたくて
自分なりにコードを書き換えたりしてみるのですが
(DataGridView1をGridView1にしてみたり、
DataGridView1をMe.DataGridView1にしてみたりしています)
すべてエラーになってしまいます。

だったらDataGridViewを設置したいと思うのですが
ツールバー内にDataGridViewはあるものの
色が薄くなっていて(グレーアウトみたいな感じです)選択できない状態です。

GridViewで、DataGridViewのコードを参考にして
少し書き換えれば動くようなことはないのでしょうか?
または
DataGridViewが使える方法を教えてください!

ご教授お願いいたします!

visual web developer2010を使用して
社内用の簡単なwebアプリケーションを作成しています。

DataGridViewとGridViewの違いは
やっとのことでなんとなく分かったのですが
(GridViewはDataGridViewの進化版?)

自分のやりたいことをネットで検索してコードを探すと
そのほとんどがDataGridViewを使用したものです。

Clipboard.SetDataObject(DataGridView1.GetClipboardContent())

たとえば上記のような感じです。

これをGridViewで使えるようにしたくて
自分なりにコードを書き換えたりしてみるのですが
(...続きを読む

Aベストアンサー

> DataGridViewとGridViewの違いは
> やっとのことでなんとなく分かったのですが

いや、この書き込みをみる限りではわかってないと思いますよ。

DataGridView:
 Windowsアプリケーション用のGridコントロール。
 Webでは使えません。

GridView:
 Webアプリケーション用のGridコントロール。
 Webなので、最終的にはHTMLに変換されます。

この一番基本的な違いがわかってないと思います。

> 自分のやりたいことをネットで検索してコードを探すと
> そのほとんどがDataGridViewを使用したものです。

Webアプリケーションの場合、すべてHTMLに変換されますから、
システムの動作はHTMLをベースに考える必要があります。
やりたいことを考えるうえで、HTMLだとどう動かせばよいか、
というところから学習するのがよいかと思います。

Qドラッグ&ドロップについてです。(VB.NET)

フォーム上に「PictureBox」コントロールを置いた状態で実行し、その「PictureBox」にデスクトップ等からファイルやフォルダをドラッグ、ドロップしまして、そのファイルやフォルダのパス名を取得するにはどうすればいいですか?
そのプログラムのサンプルがあるサイトでもいいです。

Aベストアンサー

まず、プログラムで

PictureBox1.AllowDrop = True

して、PictureBoxにドロップを許可する
次に
DragEnterイベントで、FileDropタイプを受け入れられるかどうかを調べてEffect(copyで受け入れる)をセットする

Private Sub PictureBox1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles PictureBox1.DragEnter
If (e.Data.GetDataPresent(DataFormats.FileDrop)) Then
e.Effect = DragDropEffects.Copy
Else
e.Effect = DragDropEffects.None
End If
End Sub

次に
DragDropで、パス名を取得する

Private Sub PictureBox1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles PictureBox1.DragDrop
TextBox1.Text = CType(e.Data.GetData(DataFormats.FileDrop), String())(0)
PictureBox1.Image = System.Drawing.Image.FromFile(TextBox1.Text)

End Sub

ファイルのパス名を取得してテキストボックスに表示すると共に、ピクチャーボックスに描画している
CTypeでStringの配列で受けるのは、ファイルのドロップが複数ある場合があるため

まず、プログラムで

PictureBox1.AllowDrop = True

して、PictureBoxにドロップを許可する
次に
DragEnterイベントで、FileDropタイプを受け入れられるかどうかを調べてEffect(copyで受け入れる)をセットする

Private Sub PictureBox1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles PictureBox1.DragEnter
If (e.Data.GetDataPresent(DataFormats.FileDrop)) Then
e.Effect = DragDropEffects.Copy
Else
...続きを読む


人気Q&Aランキング