点击或拖拽改变大小

DragDropClient 类

X#
创建用于拖放操作的客户端。
继承层次
Object
  VObject
    DragDropClient

命名空间:  VO
程序集:  VOGUIClasses (在 VOGUIClasses.dll 中) 版本:2.22 GA
语法
 CLASS DragDropClient INHERIT VObject
查看代码

DragDropClient 类型公开以下成员。

构造函数
  名称说明
公共方法DragDropClient
构造一个拖放操作客户端。
重要!通常,不应在应用程序代码中调用此方法。而是使用 Window:EnableDragDropClient(TRUE) 来创建一个拖放操作客户端。
Top
方法
  名称说明
公共方法Dispatch
公共方法DragLeave
通知应用程序鼠标已离开拖放操作客户端的窗口的客户区。
公共方法DragOver
通知应用程序发生了 DragOver 事件,并接受或拒绝拖放。
公共方法Drop
检索有关从拖动事件中的加载的信息,并对选择中的每个文件执行操作。
Top
字段
  名称说明
公共字段oCargo
Cargo slot.
(继承自 VObject。)
Top
备注
在 Windows 中,“拖放”是一种技术,用户可以通过视觉(使用鼠标)或通过另一种系统接受的方法从一个位置移动文件到另一个位置。 拖放操作中的客户端是一个具有关联所有者窗口的实用对象,该窗口接受拖放的文件。
创建一个拖放操作客户端会自动使其所有者窗口能够接受拖放加载。拖放操作客户端中的事件处理程序处理与拖放操作相关的事件。
重要!当您调用 Window:EnableDragDropClient(TRUE) 时,窗口将成为 DragDropClient,并继承 DragDropClient 的所有方法。 当发生 DragLeave、DragOver 或 Drop 事件时(请参见下面的示例),这些回调方法会在 Window 对象上调用。
示例
下面的示例演示了如何使用 DragDropClient 类:
X#
 1METHOD Init(oOwner) CLASS StandardShellWindow
 2    SUPER:Init(oOwner)
 3    SELF:Size     := Dimension{300,100}
 4    SELF:Origin   := Point{0,20}
 5    SELF:Caption  := "Non-MDI ChildWindow"
 6
 7    SELF:EnableMinBox()
 8    SELF:EnableMaxBox()
 9    SELF:EnableSystemMenu
10    SELF:EnableBorder()
11    SELF:EnableDragDropClient() // 将窗口设置为DragDropClient
12    SELF:Show()
13
14METHOD DragOver(oDragEvent) CLASS StandardShellWindow
15    LOCAL iCount AS INT
16    LOCAL iAcceptDrop AS LOGIC
17    // 检查拖放到窗口上的文件
18    // 只有所有文件都是.DBF时才接受
19    lAcceptDrop := TRUE
20
21    FOR iCount := 1 TO oDragEvent:FileCount
22        IF RAT(".DBF", oDragEvent:FileName(iCount)) == 0
23            lAcceptDrop := FALSE
24        EXIT
25        ENDIF
26    NEXT
27
28    RETURN lAcceptDrop
29
30METHOD DragLeave() CLASS StandardShellWindow
31// 拖放尝试期间执行的任何操作都会被撤销
32METHOD Drop(oDragEvent) CLASS StandardShellWindow
33    LOCAL nNumFiles := oDragEvent:FileCount
34    // 拖放的条目数
35    LOCAL nFile AS INT
36    // 对于每个被拖放的项目,如果它是一个文件,就打开它
37    FOR nFile := 1 TO nNumFiles
38        IF File(oDragEvent:FileName(nFile))
39            SELF:DoOpenFile(oDragEvent:FileName(nFile))
40        ENDIF
41    NEXT
参见