设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 34294|回复: 193
打印 上一主题 下一主题

[模块/函数] 【原创 / 源码】EDF应用实例讲解——窗体控件随便拖

[复制链接]
跳转到指定楼层
1#
发表于 2005-9-18 03:26:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
前言:

  EDF(EventsDistributionFrame)是本人在Access学习中开发的一个功能强大的程序,能够使许多不同类型的Access事件编程简化,为更好地介绍这个程序的使用方法,我将陆续介绍多个EDF的应用范例,及其代码的详细讲解。以便使用者更快地掌握其功能。

注:最新发布的EDF V1.2版本中已经包含了这个示例程序的最新版本,并且使用了1.2的新特性,不必再占用控件的Tags属性,改为使用EDF V1.2新增的自定义属性功能。

程序介绍:

本程序为EDF功能演示程序之一。本程序使用了EDF 1.11,实现了以下功能:

1、窗体上任何控件均能随意拖动。与多数拖动程序不同的是,开始拖动时,本程序将保持鼠标与控件的相对位置不变,而不是绑定到窗体左上角。当然前提是这个控件本身要支持鼠标事件。
2、选择控件后使用ALT加方向键,可以进行1缇为单位的位置微调。当前前提是这个控件本身要支持键盘事件。
3、可拖动的控件包括所有Access标准控件,包括窗体上已有的,和你自己加上去的控件。(你可以自己添加几个标准控件试试)
4、程序中使用了防错以避免超出窗体范围。

以上全部功能,使用EDF后,在不到30行代码内完成。

实现代码:

'定义EDF环境变量
Public edfCtls As New Collection
Public edfPorts As New Collection

Public Sub Form_Load()
    '截获窗体所有控件的事件
    edfInitEvents edfCtls, edfPorts, Me, 0
    '设定事件处理程序为DragDrop
    edfInitPorts edfPorts, AddressOf DragDrop, 0
End Sub

Public Sub DragDrop(ByRef acCtl As Control, ByRef strEvent As String, ByRef Params As Collection, ByRef reserved As Long)
    Dim Tags() As String
    '开始拖动,在标记中保存鼠标相对位置
    If strEvent = "MouseDown" Then
        acCtl.Tag = Params("X") & "," & Params("Y")
        Exit Sub
    End If
    '结束拖动,清除标记
    If strEvent = "MouseUp" Then acCtl.Tag = ""
   
'防止越界
On Error GoTo Exit_Sub
    '键盘移动
    If strEvent = "KeyDown" Then
        Select Case Params("KeyCode").Value
        Case 37: '左方向键
            acCtl.Left = acCtl.Left - 1
        Case 38: '上方向键
            acCtl.Top = acCtl.Top - 1
        Case 39: '右方向键
            acCtl.Left = acCtl.Left + 1
        Case 40: '下方向键
            acCtl.Top = acCtl.Top + 1
        End Select
    End If
    '鼠标拖动
    If strEvent = "MouseMove" And acCtl.Tag <> "" Then
        Tags = Split(acCtl.Tag, ",")
        acCtl.Left = acCtl.Left + Params("X") - CLng(Tags(0))
        acCtl.Top = acCtl.Top + Params("Y") - CLng(Tags(1))
    End If
   
Exit_Sub:
End Sub







完整下载:(包含实现代码和EDF 1.11环境)

游客,如果您要查看本帖隐藏内容请回复



[此贴子已经被作者于2006-5-23 12:58:00编辑过]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
196#
发表于 2022-11-16 19:23:09 | 只看该作者
123456
回复

使用道具 举报

195#
发表于 2016-8-27 15:37:42 | 只看该作者
学习一下,好好看看!
194#
发表于 2016-8-9 11:23:51 | 只看该作者
学习加点赞
193#
发表于 2016-8-8 14:11:04 | 只看该作者
SEEEEEEEEEEEEEEEEEEEEE
192#
发表于 2016-8-7 14:13:26 | 只看该作者
谢谢
回复

使用道具 举报

点击这里给我发消息

191#
发表于 2015-2-17 22:23:06 | 只看该作者
窗体控件
回复

使用道具 举报

190#
发表于 2014-12-11 20:46:33 | 只看该作者
好东西,就在找他啊

点击这里给我发消息

189#
发表于 2013-6-21 08:23:35 | 只看该作者
OKOKOK
回复

使用道具 举报

188#
发表于 2011-9-28 19:35:23 | 只看该作者
学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-9-21 18:06 , Processed in 0.109291 second(s), 36 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表