Versions Compared

Key

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

[ Image Removed |../../index.htm#lansa/l4wdev06_0700.htm]
現在地:

...

この例では、社員を1つのフォームからドラッグし、他のフォームにドロップします。

これがソースのフォームです。 Image Removed

Image Added

これがターゲットのフォームです。 Image Removed

Image Added

Ctrlキーを押されずに社員がドラッグされると、ソース・フォームからターゲット・フォームに移動されます。Ctrlキーを押された場合は、社員はソース・フォームからターゲット・フォームにコピーされます。

カーソル

移動とコピーの動作の違いが見てわかるよう、2つのカーソル・コンポーネントを使用します。そのため、この例を実行する場合は、カーソル・タイプのコンポーネントを2つ作成する必要があります。

DD_CURMOV

このカーソルは、社員をコピーするときに表示されます。

DD_CURCPY

このカーソルは、社員を移動するときに表示されます。

これらのコンポーネントを作成する場合は、既存の.curファイルをFileNameプロパティの値として指定する必要があります。.curファイルは、Windowsのディレクトリで見つけることができます。どのカーソル・イメージを選択してもかまいません。

この例を実行するには、前のセクションの2つのカーソルのDD_EMPPL Payloadのソースを再利用可能パーツにコンパイルし、ソース・フォームのソースとターゲット・フォームのソースをコンパイルする必要があります。

ソース・フォームを実行します。ターゲット・フォームは自動的に表示されます。

ソース・フォームのソース

このソースをコピーしてフォームに貼り付け、コンパイルして実行してください。 FUNCTION options

     FUNCTION options(*DIRECT)
BEGIN_

...

COM role(*

...

EXTENDS #PRIM_FORM)

...

 HEIGHT(258)

...

 LAYOUTMANAGER(#ATLM_1)

...

 LEFT(302)

...

 TOP(108)

...

 VISUALSTYLE(#VS_NORM)

...

 WIDTH(662)
DEFINE_

...

COM class(#PRIM_ATLM)

...

 name(#ATLM_1)
DEFINE_

...

COM class(#PRIM_STBR)

...

 name(#STBR_1)

...

 DISPLAYPOSITION(1)

...

 HEIGHT(24)

...

 LEFT(0)

...

 MESSAGEPOSITION(1)

...

 PARENT(#COM_OWNER)

...

 TABPOSITION(1)

...

 TABSTOP(False)

...

 TOP(207)

...

 WIDTH(654)
DEFINE_

...

COM class(#PRIM_ATLI)

...

 name(#ATLI_1)

...

 ATTACHMENT(Bottom)

...

 MANAGE(#STBR_1)

...

 PARENT(#ATLM_1)
DEFINE_

...

COM class(#PRIM_LTVW)

...

 name(#LTVW_1)

...

 DISPLAYPOSITION(2)

...

 DRAGSTYLE(Automatic)

...

 FULLROWSELECT(True)

...

 HEIGHT(207)

...

 LEFT(0)

...

 PARENT(#COM_OWNER)

...

 TABPOSITION(2)

...

 TOP(0)

...

 WIDTH(654)
DEFINE_

...

COM class(#PRIM_ATLI)

...

 name(#ATLI_2)

...

 ATTACHMENT(Center)

...

 MANAGE(#LTVW_1)

...

 PARENT(#ATLM_1)
DEFINE_

...

COM class(#PRIM_LVCL)

...

 name(#LVCL_1)

...

 DISPLAYPOSITION(1)

...

 PARENT(#LTVW_1)

...

 SOURCE(#EMPNO)

...

 WIDTH(16)
DEFINE_

...

COM class(#PRIM_LVCL)

...

 name(#LVCL_2)

...

 DISPLAYPOSITION(2)

...

 PARENT(#LTVW_1)

...

 SOURCE(#SURNAME)

...

 WIDTH(20)
DEFINE_

...

COM class(#PRIM_LVCL)

...

 name(#LVCL_3)

...

 DISPLAYPOSITION(3)

...

 PARENT(#LTVW_1)

...

 SOURCE(#GIVENAME)

...

 WIDTH(20)
DEFINE_

...

COM class(#PRIM_LVCL)

...

 name(#LVCL_4)

...

 DISPLAYPOSITION(4)

...

 PARENT(#LTVW_1)

...

 SOURCE(#DEPTMENT)

...

 WIDTH(20)
DEFINE_

...

COM class(#PRIM_LVCL)

...

 name(#LVCL_5)

...

 DISPLAYPOSITION(5)

...

 PARENT(#LTVW_1)

...

 SOURCE(#SECTION)

...

 WIDTH(20)

...


DEFINE_

...

COM class(#DD_TARGET)

...

 name(#DD_TARGET)

...


EVTROUTINE handling(#com_owner.CreateInstance)

...


SET com(#com_owner)

...

 CAPTION(*component_desc)

...


SELECT fields(#LTVW_1)

...

 from_file(PSLMST)
ADD_

...

ENTRY to_list(#LTVW_1)

...


ENDSELECT
INVOKE method(#dd_target.showform)

...


INVOKE method(#com_owner.activateform)

...


ENDROUTINE
EVTROUTINE handling(#LTVW_1.StartDrag)

...

 PAYLOAD(#Payload)
DEFINE_

...

COM class(#dd_emppl)

...

 name(#Local_Payload)

...


* Create payload
SELECTLIST named(#LTVW_1)

...


CONTINUE if('#ltvw_1.currentitem.

...

selected =

...

 False')

...


INVOKE method(#Local_Payload.Add_to_payload)

...

 EMPLOYEE_ID(#empno)

...

 EMPLOYEE_SURNAME(#surname)

...

 EMPLOYEE_GIVENAME(#givename)

...

 EMPLOYEE_DEPARTMENT(#deptment)

...

 EMPLOYEE_SECTION(#section)

...


ENDSELECT
* Move temporary payload to Drag Manager.
* Temporary Payload is destroyed at the end of the routine
SET_REF com(#payload) to(#Local_Payload)

...


ENDROUTINE
* Check Drag result
EVTROUTINE handling(#LTVW_1.EndDrag)

...

 PAYLOAD(#payload)

...

 DRAGRESULT(#DragResult)
DEFINE_

...

COM class(#dd_emppl)

...

 name(#Local_Payload)

...

 reference(*dynamic)

...


SET_

...

REF com(#Local_payload)

...

 to(*

...

dynamic #Payload)
CHANGE field(#STD_OBJ)

...

 to('#DRAGRESULT.VALUE')

...


IF cond('#DragResult.

...

value =

...

 Accepted')

...


* Control key down then copying
IF cond('#sys_keybd.

...

ControlkeyDown =

...

 False')

...


SELECTLIST named(#LTVW_1)

...


CONTINUE if('#ltvw_1.currentitem.

...

selected =

...

 False')
DLT_

...

ENTRY from_list(#LTVW_1)
ENDSELECT

...


ENDIF
ENDIF
ENDROUTINE
EVTROUTINE handling(#COM_OWNER.Closing)

...

 options(*

...

NOCLEARMESSAGES *NOCLEARERRORS)

...


INVOKE method(#dd_target.closeform)
ENDROUTINE
END_COM

...

ターゲット・フォームのソース

このソースをコピーしてフォームに貼り付け、コンパイルして実行してください。このフォームは自動的にソース・フォームから表示されます。 FUNCTION options

     FUNCTION options(*DIRECT)
BEGIN_

...

COM role(*

...

EXTENDS #PRIM_FORM)

...

 HEIGHT(256)

...

 LAYOUTMANAGER(#ATLM_1)

...

 LEFT(314)

...

 TOP(356)

...

 VISUALSTYLE(#VS_NORM)

...

 WIDTH(644)
DEFINE_

...

COM class(#PRIM_ATLM)

...

 name(#ATLM_1)
DEFINE_

...

COM class(#PRIM_STBR)

...

 name(#STBR_1)

...

 DISPLAYPOSITION(1)

...

 HEIGHT(24)

...

 LEFT(0)

...

 MESSAGEPOSITION(1)

...

 PARENT(#COM_OWNER)

...

 TABPOSITION(1)

...

 TABSTOP(False)

...

 TOP(205)

...

 WIDTH(636)
DEFINE_

...

COM class(#PRIM_ATLI)

...

 name(#ATLI_1)

...

 ATTACHMENT(Bottom)

...

 MANAGE(#STBR_1)

...

 PARENT(#ATLM_1)
DEFINE_

...

COM class(#PRIM_LTVW)

...

 name(#LTVW_1)

...

 DISPLAYPOSITION(2)

...

 FULLROWSELECT(True)

...

 HEIGHT(205)

...

 LEFT(0)

...

 PARENT(#COM_OWNER)

...

 TABPOSITION(2)

...

 TOP(0)

...

 WIDTH(636)
DEFINE_

...

COM class(#PRIM_ATLI)

...

 name(#ATLI_2)

...

 ATTACHMENT(Center)

...

 MANAGE(#LTVW_1)

...

 PARENT(#ATLM_1)
DEFINE_

...

COM class(#PRIM_LVCL)

...

 name(#LVCL_1)

...

 DISPLAYPOSITION(1)

...

 PARENT(#LTVW_1)

...

 SOURCE(#EMPNO)

...

 WIDTH(16)
DEFINE_

...

COM class(#PRIM_LVCL)

...

 name(#LVCL_2)

...

 DISPLAYPOSITION(2)

...

 PARENT(#LTVW_1)

...

 SOURCE(#SURNAME)

...

 WIDTH(20)
DEFINE_

...

COM class(#PRIM_LVCL)

...

 name(#LVCL_3)

...

 DISPLAYPOSITION(3)

...

 PARENT(#LTVW_1)

...

 SOURCE(#GIVENAME)

...

 WIDTH(20)
DEFINE_

...

COM class(#PRIM_LVCL)

...

 name(#LVCL_4)

...

 DISPLAYPOSITION(4)

...

 PARENT(#LTVW_1)

...

 SOURCE(#DEPTMENT)

...

 WIDTH(20)
DEFINE_

...

COM class(#PRIM_LVCL)

...

 name(#LVCL_5)

...

 DISPLAYPOSITION(5)

...

 PARENT(#LTVW_1)

...

 SOURCE(#SECTION)

...

 WIDTH(20)

...


EVTROUTINE handling(#com_owner.CreateInstance)

...


SET com(#com_owner)

...

 CAPTION(*component_desc)

...


ENDROUTINE
EVTROUTINE handling(#ltvw_1.DragOver)

...

 PAYLOAD(#payload)

...

 ACCEPTDROP(#AcceptDrop)

...

 DRAGCURSOR(#Cursor)

...


* If an instance of the Employee "Payload"

...


SET com(#Acceptdrop)

...

 VALUE(true)

...


IF cond('#sys_keybd.

...

ControlkeyDown =

...

 False')

...


SET_

...

REF com(#cursor)

...

 to(#dd_curmov)

...


ELSE
SET_REF com(#cursor)

...

 to(#dd_curcpy)

...


ENDIF
ENDROUTINE
EVTROUTINE handling(#ltvw_1.DragDrop)

...

 PAYLOAD(#payload)
DEFINE_

...

COM class(#dd_emppl)

...

 name(#Local_Payload)

...

 reference(*dynamic)

...


SET_

...

REF com(#Local_Payload)

...

 to(*

...

dynamic #Payload
* Get the number of items from the payload
CHANGE field(#STD_NUM)

...

 to('#Local_Payload.Payload_Items'

...


* Get the number of items data from the payload
BEGIN_LOOP using(#LISTENTRY) to(#STD_NUM)

...


INVOKE method(#Local_Payload.Get_Payload_Item)

...

 PAYLOAD_ITEM(#listentry)

...

 EMPLOYEE_ID(#empno)

...

 EMPLOYEE_SURNAME(#surname)

...

 EMPLOYEE_GIVENAME(#givename)

...

 EMPLOYEE_DEPARTMENT(#deptment)

...

 EMPLOYEE_SECTION(#section)
ADD_

...

ENTRY to_list(#LTVW_1)
END_LOOP

...


SET_

...

REF com(#Local_Payload)

...

 to(*null)

...


ENDROUTINE
END_COM