Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > 综合其它

ACCESS VBA编程(二)窗体

时 间:2012-11-13 09:03:27
作 者:周芳(转)   ID:24526  城市:上海
摘 要:窗体是一种文档,可以用来收集信息。它包括两部分,一部分是由窗体设计者输入的,填写窗体的人无法更改的文字或图形。窗体设计者可以插入希望得到回答的问题、选项列表、信息表格等。另一部分是由窗体填写者输入的,用于从填写窗体者处收集信息并进行整理的空白区域。窗体设计者可以在文档中插入窗体域或 ActiveX 控件,为窗体填写者提供用于收集数据的位置。
正 文:

指定当窗体上的命令按钮保持按下状态时,是否重复执行事件过程或宏
使用 AutoRepeat 属性可以指定当窗体上的命令按钮保持按下状态时,是否重复执行事件过程或宏
True 、False


 '允许添加
me.AllowAdditions= True 

  
 '记录不锁定
me.RecordLocks = 1


  是否自动居中
AutoCenter= True,False   

        
是否自动调整
AutoResize = True,False     


窗体边框样式
 me.BorderStyle=1 中译:无


其它
1   无
2   细边框
3   可调边框
4   对话框边框


设置窗体、页眉、页脚颜色:
Me.Section(0).BackColor = 200
Me.Section(1).BackColor = 200
Me.Section(2).BackColor = 200


窗体标题
me.Caption="中国ACCESS软件网" 中译:窗体标题为"中国ACCESS软件网"(不含引号)


关闭按钮
me.CloseButton =True  中译 允许关闭按钮
其它:true:允许 False:不允许


控制框
me.ControlBox =True  允许
其它:true:允许 False:不允许


默认视图
me.DefaultView =0 为单一窗口
其它:0:单一窗口1:连续窗体2:数据表


允许分隔线
me.DividingLines =True  中译 允许分隔线
其它:true:允许 False:不允许


允许打印版式
英文:me.LayoutForPrint =True  中译 允许打印版式
其它:true:允许 False:不允许


无最大最小化按钮
英文:me.MinMaxButtons =0 中译 无最大最小化按钮
其它:0:无 1:最大化 2:最小化 3:两者都有


允许浏览按钮
英文:me.NavigationButtons =True  中译 允许浏览按钮
其它:true:允许 False:不允许


滚动条
me.ScrollBars =0二者均无
其它:0:二者均无 1:只垂直 2:只水平3:二者都有


允许/不允许添加
me.AllowAdditions=True/False 


允许/不允许删除
me.AllowDeletions=True/False 


允许/不允许编辑
me.AllowEdits=True/False 


指定是否允许打开绑定窗体进行数据输入
使用 DataEntry 属性可以指定是否允许打开绑定窗体进行数据输入。DataEntry 属性不决定是否可以添加记录,只决定是否显示已有的记录。Boolean 型,可读/写。
True 、False


允许/不允许筛选
 me.AllowFilters=True/False
Filter="筛选内容"筛选


应用与/否筛选
FilterOn=True/False 
将 MyForm 窗体的 BackColor 属性,改成 ColorCode 参数指定的色彩。
使用 QBColor 函数将 MyForm 窗体的 BackColor 属性,改成 ColorCode 参数指定的色彩。QBColor 可接受 0 到 15 的整型值。
Sub ChangeBackColor (ColorCode As Integer, MyForm As Form)
    MyForm.BackColor = QBColor(ColorCode)
End Sub


窗体真正居中显示
如下代码可以做到真正居中显示

Private Sub Form_Load()
DoCmd.Echo False
Dim x, y As Integer
DoCmd.Maximize
x = Me.WindowWidth
y = Me.WindowHeight
DoCmd.Restore
DoCmd.Echo True
Move (x - Me.WindowWidth) / 2, (y - Me.WindowHeight) / 2
End Sub


隐藏窗体[学生名册]数据表视图中的性别字段
Table!学生名册!性别.ColumnHidden = -1


显示获得焦点窗体的 Name 属性设置:
使用 ActiveForm 属性(和 Screen 对象一起)可以标识或引用获得焦点的窗体。
Dim dqhdct As Form
Set dqhdct = Screen.ActiveForm
MsgBox dqhdct.Name


判断窗体是否打开的方法

Function IsLoaded(strName As String, Optional intObjectType As Integer =
acForm)
IsLoaded = (SysCmd(acSysCmdGetObjectState, intObjectType, strName) <> 0)
End Function


使用 IsLoaded 属性可以确定当前是否加载了 AccessObject。Boolean 型,只读。
以下是一个示例:
If CurrentProject.AllForms("frmMain").IsLoaded = True Then
Forms!frmMain.Form.Visible = False
End If


窗体中组合框不在列表中示例
不在列表中事件代码:
Private Sub 名称_NotInList(NewData As String, Response As Integer)
    Response = acDataErrContinue
    If MsgBox("您输入的名称不在列表中,在列表中添加新记录吗?", 68, "银河酒业") = 6 Then
   
    Me![名称] = Null
    DoCmd.GoToControl "单价"
   
    DoCmd.OpenForm "酒名列表", , , , acAdd, acNormal
    Else
    Me![名称] = Null
    Me![名称].Dropdown
    End If
End Sub


获得焦点事件代码:
Private Sub 名称_GotFocus()
Me![名称].Requery
End Sub


如何让窗体总在最前面?
*API函数声明
Declare Function SetWindowPos Lib "user32" ( ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long


注释:常量声明
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2


注释: 在某个form里写:
SetWindowPos me.hWnd,WND_TOPMOST,0,0,0,0, SWP_NOMOVE 注释:或下面
SetWindowPos me.hWnd,WND_TOPMOST,0,0,0,0, SWP_NOSIZE


用代码选择图表样式
 "柱形图"
 Me.graphnow.Object.ChartType = xlColumnClustered
 "折线图"
Me.graphnow.Object.ChartType = xlLineMarkers
"饼形图"
Me.graphnow.Object.ChartType = xl3DPie
"条形图"
Me.graphnow.Object.ChartType = xlBarClustered

柱形图 簇状柱形图 xlColumnClustered
  三维簇状柱形图 xl3DColumnClustered
  堆积柱形图 xlColumnStacked
  三维堆积柱形图 xl3DColumnStacked
  百分比堆积柱形图 xlColumnStacked100
  三维百分比堆积柱形图 xl3DColumnStacked100
  三维柱形图 xl3DColumn
条形图 簇状条形图 xlBarClustered
  三维簇状条形图 xl3DBarClustered
  堆积条形图 xlBarStacked
  三维堆积条形图 xl3DBarStacked
  百分比堆积条形图 xlBarStacked100
  三维百分比堆积条形图 xl3DBarStacked100
折线图 折线图 xlLine
  数据点折线图 xlLineMarkers
  堆积折线图 xlLineStacked
  堆积数据点折线图 xlLineMarkersStacked
  堆积百分比折线图 xlLineStacked100
  百分比堆积数据点折线图 xlLIneMarkersStacked100
  三维折线图 xl3DLine
饼图 饼图 xlPie
  分离型饼图 xlPieExploded
  三维饼图 xl3Dpie
  三维分离型饼图 xl3DPieExploded
  复合饼图 xlPieOfPie
  复合柱饼图 xlBarOfPie
XY (散点图) 散点图 xlXYScatter
  平滑线散点图 xlXYScatterSmooth
  无数据点平滑线散点图 xlXYScatterSmoothNoMarkers
  折线散点图 xlXYScatterLines
  无数据点折线散点图 xlXYScatterLinesNoMarkers
气泡图 气泡图 xlBubble
  三维气泡图 xlBubble3DEffect
面积图 面积图 xlArea
  三维面积图 xl3DArea
  堆积面积图 xlAreaStacked
  三维堆积面积图 xl3DAreaStacked
  百分比堆积面积图 xlAreaStacked100
  三维百分比堆积面积图 xl3DAreaStacked100
圆环图 圆环图 xlDoughnut
  分离型圆环图 xlDoughnutExploded
雷达图 雷达图 xlRadar
  数据点雷达图 xlRadarMarkers
  填充雷达图 xlRadarFilled
曲面图 三维曲面图 xlSurface
  曲面图(俯视图) xlSurfaceTopView
  三维曲面图(框架图) xlSurfaceWireframe
  曲面图(俯视框架图) xlSurfaceTopViewWireframe
股价图 盘高-盘低-收盘图 xlStockHLC
  成交量-盘高-盘低-收盘图 xlStockVHLC
  开盘-盘高-盘低-收盘图 xlStockOHLC
  成交量-开盘-盘高-盘低-收盘图 xlStockVOHLC
圆柱图 簇状柱形圆柱图 xlCylinderColClustered
  簇状条形圆柱图 xlCylinderBarClustered
  堆积柱形圆柱图 xlCylinderColStacked
  堆积条形圆柱图 xlCylinderBarStacked
  百分比堆积柱形圆柱图 xlCylinderColStacked100
  百分比堆积条形圆柱图 xlCylinderBarStacked100
  三维柱形圆柱图 xlCylinderCol
圆锥图 簇状柱形圆锥图 xlConeColClustered
  簇状条形圆锥图 xlConeBarClustered
  堆积柱形圆锥图 xlConeColStacked
  堆积条形圆锥图 xlConeBarStacked
  百分比堆积柱形圆锥图 xlConeColStacked100
  百分比堆积条形圆锥图 xlConeBarStacked100
  三维柱形圆锥图 xlConeCol
棱锥图 簇状柱形棱锥图 xlPyramidColClustered
  簇状条形棱锥图 xlPyramidBarClustered
  堆积柱形棱锥图 xlPyramidColStacked
  堆积条形棱锥图 xlPyramidBarStacked
  百分比堆积柱形棱锥图 xlPyramidColStacked100
  百分比堆积条形棱锥图 xlPyramidBarStacked100
  三维堆积柱形棱锥图 Color 属性


移动无边框窗体例子
模块:
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function ReleaseCapture Lib "user32" () As Long
Public Const WM_NCLBUTTONDOWN = &HA1
Public Const HTCAPTION = 2


应用:
Private Sub Form_Close()
DoCmd.RunCommand acCmdAppMaximize
End Sub

Private Sub Form_Load()
DoCmd.RunCommand acCmdAppMinimize
End Sub

Private Sub XPForm_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Button = 1 Then
    ReleaseCapture
    SendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
  End If
End Sub

Private Sub 命令20_Click()
DoCmd.Close
End Sub



Access软件网QQ交流群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助