Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

新しいフォームを作成し、ソースを次のコードで置き換えます。
 

*
**************************************************
*
*  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)

* Initialisation
Evtroutine Handling(#com_owner.Initialize)
#SYS_APPLN.AllowWindowsDragDrop := True
Set 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 := True
Endif
Endif
Endroutine
 
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 += 1
Endwhile
Endif
Endroutine
End_Com


Windows Explorerを使用してファイルを選択します。ファイルをListViewの上にドラッグし、選択したファイルの数が「Items」列に表示されるのを確認します。ファイルをListViewの上にドロップし、ファイル・パスが2列目に表示されるのを確認します。

Warning
title警告

警告:DragOver イベント・ハンドラーでドラッグ状態をチェックするコードに注意してください。DragDrop が完了した後、別の DragOver イベントが、dragState  Exit に設定して発生します。こうすることで、コントロールでドラッグ完了時に必要な任意の最終処理を実行できるようになります。


次のトピックも参照してください。

2.23.1 Payload

2.23.2 例1: ツリー内で社員を移動

2.23.3 例2: 2つのフォーム間で社員を移動