Access911.net   |   a9BBS   |   OTaA System  
  搜索文章:  
Access911欢迎您光临  
   主页      上传      繁體版       论坛     
设为首页  |  加入收藏   
  
你现在的位置:文章索引 -> 文章分类 -> 窗体  
 首页|  近日更新|  下载  |  文章索引  |  搜索|  术语|  承接工程|  
 
系统正在加载内容,请耐心等待...
 
 查询
 窗体
 报表
 
 
 VBA
 函数
 ADO/DAO/ADO.NET
 API
 ADP
 安全
 发布
 OA
 ASP/ASP.NET
 其他语言
 控件
 DELPHI
 C#/.Net
 本站
 其他
 小例程
 常用软件
 参考文档
 业主作品
 网友大作
 
 
友情链接
 access911.net
 
访问人次
 1702747
 
站长 E-Mail
 net911@sina.com
 access911@gmail.com
 
RSS 订阅

显示附加信息 >>>

如何拖动没有标题栏的access窗体?

作者:cg1  摘自:access911.net  :cg1  更新日期:2002-12-9  浏览人次:

 

方法一:

Dim MoveScreen As Boolean   '开关符,确定当前是否还在屏幕上移动
Dim MousX As Integer
Dim MousY As Integer

Dim CurrX As Integer
Dim CurrY As Integer

Private Sub 主体_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    
    '如果鼠标仍然是按下的,那么移动窗体
    If MoveScreen Then
        CurrX = Me.WindowLeft - MousX + X
        CurrY = Me.WindowTop - MousY + Y
        '移动窗体到新的坐标
        Me.Move CurrX, CurrY
    End If
   
    Debug.Print "窗体X", CurrX, "窗体Y", CurrY, "鼠标X", MousX, "鼠标Y", MousY
End Sub

Private Sub 主体_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    MoveScreen = False    '鼠标放开时不允许移动窗体
End Sub
 
Private Sub 主体_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    MoveScreen = True   '只有在鼠标按下的时候才能移动窗体
    MousX = X
    MousY = Y
End Sub


 


本站文章旨在为该问题提供解决思路及关键性代码,并不能完成应该由网友自己完成的所有工作,请网友在仔细看文章并理解思路的基础上举一反三、灵活运用。

access911.net 原创文章,作者本人对文章保留一切权利。
如需转载必须征得作者同意并注明本站链接


方法二:

Option Explicit 
'Variables 
'Switch to turn drah on and off. 
Dim MoveScreen As Boolean 
'Vars to get the mouse position on the FORM. 
'  you are draging. 
Dim MousX As Integer 
Dim MousY As Integer 
'Vars for moving the FORM. 
Dim CurrX As Integer 
Dim CurrY As Integer 

Private Sub FORM_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) 
  MoveScreen = True ' make FORM movable while the mouse is down. 
  'Get the initial coordinates of the mouse on the FORM. 
  MousX = X 
  MousY = Y 
End Sub 

Private Sub FORM_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) 
    
  'If the mouse is down on the FORM then. 
  If MoveScreen Then 
    'Calculate the new x,y position for the FORM. 
    '  NB. This is dependant on the X and Y vars on the FORM_MouseMove, 
    '  you can use objects MouseMove function. I.e. a Label or Textbox. 
    CurrX = FORM1.Left - MousX + X 
    CurrY = FORM1.Top - MousY + Y 
    ''Move the FORM to the new X,Y. 
    FORM1.Move CurrX, CurrY   ' move FORM. 
  End If 
   
  'Display the new X,Y position of the FORM. 
  Label3.Caption = CurrX 
  Label4.Caption = CurrY 
  ''Display where on the FORM the mouse was clicked. 
  Label7.Caption = MousX 
  Label8.Caption = MousY 
End Sub 

Private Sub FORM_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) 
  MoveScreen = False  ' stop the FORM from moving. 
End Sub 


 


方法三:


Const HTCAPTION = 2
Const WM_NCLBUTTONDOWN = &HA1

'Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long

Private Sub 主体_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then
           Dim ReturnVal As Long
           'X = ReleaseCapture()
           ReturnVal = SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0)
           Debug.Print ReturnVal
    End If
End Sub



 

 

 
相关文章
     没有手动相关文章
 
评论
     查看或发表更多的评论,请单击这里。
 
 
 
 
 
   
  Access911.net   |   a9BBS   |   OTaA System   |
建站日期:2000年4月2日  |  设计施工:陈格 ( access911 & cg1 )
 Copyright © 2000 - 2003 COMET, 陈格 保留所有权利