Page History
[ |../../index.htm#lansa/l4wdev06_0110.htm]
現在地:
...
ドラッグ・アンド・ドロップ操作は、オブジェクトをある場所から別の場所に移動またはコピーするために使用されます。
ドラッグ・アンド・ドロップ操作は、マウスの左ボタンをクリックしてマウスでオブジェクトを選択すると開始します。それからマウスの左ボタンを押さえたままオブジェクトをドラッグし、最後にマウスの左ボタンを離してオブジェクトをドロップします。
ドラッグ・アンド・ドロップ操作は、4つのイベントで構成されます。
StartDrag
DragOver
DragDrop
EndDrag
ドラッグ・アンド・ドロップされるオブジェクトは、Payloadです。
LANSAコントロールで、ドラッグ・オーバーまたはドラッグ・アンド・ドロップ・イベント中に Windows Explorer からのファイル・パスを受け入れるようにするには、Sysからのファイル・パスを受け入れるようにするには、Sys_Appln で (例えば) 次のプロパティを有効にします。 #com_owner.Initialize.
#SYS_APPLN.AllowWindowsDragDrop := True
ファイルをドラッグすると、イベント・ハンドラーのPayloadパラメータに、タイプ #PRIM_APPL.IDragDropFilePaths のコンポーネント・インターフェースが含まれます。
このインターフェースは、2つのメソッドを公開します。
FileCount | ドラッグされたファイルの数を確認する |
|---|---|
FilePath<インデックス> | 位置インデックスのファイル・パスを取得する |
以下は、この機能を使用して、ListViewコントロールにドラッグ・アンド・ドロップされるファイル・パスのリストを取得できるようにする方法の例を示しています。
新しいフォームを作成し、ソースを次のコードで置き換えます。
*
...
****************************************************
...
COMPONENT: STD_FORM***
...
*************************************************
...
Function Options(*DIRECT)Begin_
...
Com Role(*
...
EXTENDS #PRIM_FORM)
...
Clientheight(374)
...
Clientwidth(449)
...
Dragstyle(Aggregated)
...
Height(410)
...
Left(513)
...
Top(151)
...
Width(465) Define_
...
Com Class(#PRIM_LTVW)
...
Name(#ListView)
...
Columnbuttonheight(20)
...
Componentversion(2)
...
Displayposition(1)
...
Dragstyle(Automatic)
...
Enforceminimumsize(True)
...
Fullrowselect(True)
...
Height(289)
...
Keyboardpositioning(SortColumn)
...
Left(16)
...
Parent(#COM_OWNER)
...
Showsortarrow(True)
...
Tabposition(1)
...
Top(8)
...
Width(420)Define_
...
Com Class(#PRIM_LVCL)
...
Name(#LVCL_1)
...
Caption('Items')
...
Captiontype(Caption)
...
Displayposition(1)
...
Minimumwidth(10)
...
Parent(#ListView)
...
Source(#STD_NUM)
...
Width(10)Define_
...
Com Class(#PRIM_LVCL)
...
Name(#LVCL_2)
...
Caption('
...
File Path')
...
Captiontype(Caption)
...
Displayposition(2)
...
Minimumwidth(10)
...
Parent(#ListView)
...
Source(#VF_INSDTA)
...
Width(93)
...
* InitialisationEvtroutine Handling(#com_owner.Initialize)#SYS_APPLN.
...
AllowWindowsDragDrop :=
...
TrueSet Com(#com_owner)
...
Caption(*component_desc)Endroutine
...
Evtroutine Handling(#ListView.DragOver)
...
Options(*
...
NOCLEARMESSAGES *NOCLEARERRORS)
...
Payload(#draggedData)
...
Acceptdrop(#acceptDrop)
...
Dragstate(#dragState)
...
If (
...
#dragState *
...
NE Exit)
...
If (
...
#draggedData *
...
Is #PRIM_APPL.IDragDropFilePaths)#STD_
...
NUM :=
...
(
...
#draggedData *
...
As #PRIM_APPL.IDragDropFilePaths).FileCount#VF_
...
INSDTA :=
...
'' Clr_
...
List Named(#ListView) Add_
...
Entry To_List(#ListView)
...
#acceptDrop :=
...
TrueEndifEndifEndroutine
...
Evtroutine Handling(#ListView.DragDrop)
...
Options(*
...
NOCLEARMESSAGES *NOCLEARERRORS)
...
Payload(#draggedData)Clr_
...
List Named(#ListView)
...
If (#draggedData *Is #PRIM_APPL.IDragDropFilePaths)
...
Define Field(#NumFiles)
...
Reffld(#STD_NUM)
...
#NumFiles :=
...
(
...
#draggedData *
...
As #PRIM_APPL.IDragDropFilePaths).FileCount#STD_
...
NUM :=
...
1 Dowhile Cond(#STD_
...
NUM <=
...
#NumFiles)#VF_
...
INSDTA :=
...
(
...
#draggedData *
...
As #PRIM_APPL.IDragDropFilePaths).FilePath<#STD_NUM>Add_
...
Entry To_List(#ListView)#STD_
...
NUM +=
...
1EndwhileEndifEndroutineEnd_Com
...
Windows Explorerを使用してファイルを選択します。ファイルをListViewの上にドラッグし、選択したファイルの数が「Items」列に表示されるのを確認します。ファイルをListViewの上にドロップし、ファイル・パスが2列目に表示されるのを確認します。
| Warning |
|---|
...
警告: |
...
イベントが、 |
次のトピックも参照してください。
...
