Access编程交流网
  • 设为首页|收藏本站|繁体中文|手机版
  •     
  • Access培训-Access开发平台-Access行业开发

  • 首页
  • 资讯
  • 技巧
  • 源码
  • 行业
  • 资源
  • 活动
  • 关于

技巧

ACCESS数据库

启动/设置/选项/背景

修复/压缩

安全/加密/解密

快捷键

版本升级/其它等

数据表

命名方式/设计规范

表设计

查询

Sql语言基础

选择查询

更新查询

删除查询

追加查询

生成表查询

交叉表查询

SQL特定查询

查询参数

查询综合应用

界面/窗体/控件

标签

文本框

命令按钮

组合框/列表框

选项组/复选框/选项按钮

选项卡

子窗体

窗体本身/综合应用

其它

报表打印

报表设计

高级报表

模块/函数/VBA/API/系统

VBA基础

内置函数

调试/跟踪/Debug

模块/类模块

API/COM/系统相关

字符数字日期

网络通信游戏

加密解密安全

文件处理

经典算法

宏/菜单/工具栏/功能区

宏/脚本

菜单/工具栏

功能区/Ribbon

图表/图形/图像/多媒体

图表

图形/图像

音频

视频/动画

DAO/链接表/ADO/ADP

DAO/链接表/ODBC

ADO/RDO

ADP

ActiveX/第三方控件/插件

Treeview树控件

ListView列表控件

Toolbar工具栏控件

微软其它控件

Dbi-Tech

CodeJock

Grid++Report

FastReport

ComponentOne

加载项/插件/Addin

OFFICE集成/导入导出/交互

Excel导入导出/交互

Word导入导出/交互

PPT交互

Outlook控制/邮件

Text文本文件/INI/CSV

PDF/SWF/XML格式

CAD格式

Sharepoint/其它Office

SqlServer/其它数据库

表

视图

存储过程/触发器

函数

用户/权限/安全

调试/维护

SqlServer其它/综合

发布/打包/文档/帮助

开发版/运行时

打包/发布/部署

开发文档/帮助制作

Access完整行业系统

采购管理系统

销售管理系统

仓库管理系统

人力资源管理HRM

CRM管理系统

MRP/ERP管理系统

BRP/流程优化

其它管理系统

心得/经验/绝招
其它/杂项
Excel技巧

Excel应用与操作

Excel开发编程

Word技巧

Word应用与操作

Word开发编程

Outlook技巧

Outlook应用与操作

Outlook开发编程

热门文章

  • Access报表打印设置
  • 报表中遇到不满一页如何用空..
  • Access报表补空行代码
  • Access中窗体或者报表..
  • 如何制作复杂报表——利用E..
  • 新手来看:在报表中不显示重..

最新文章

  • Access中窗体或者报表..
  • Access报表文本框按字..
  • Access报表打印设置
  • Access报表补空行代码
  • 懒人有懒计——浅谈自动报表
  • Access使用excel..

联系方式

Access交流网(免费Access交流)

QQ:18449932 

网  址:www.access-cn.com

当前位置:首页 > 技巧 > 报表打印
报表打印

移除报表预览窗口的Min/Max/Close按钮

作    者:Terry Kreft & Keri Hardwick  
发布日期:2002年11月13日
摘    要:从报表的预览窗口上移除最小化、最大化以及复原按钮,创建一个自定义的工具条让用户来关闭报表以及使用某些API函数来移除预览窗口上的标题栏。使用这种方法,一旦最大化报表,预览窗口将占据整个access的屏幕窗口而不出现允许复原按钮恢复原来窗口的大小以及不出现其它按钮。

正    文:

  从报表的预览窗口上移除最小化、最大化以及复原按钮,创建一个自定义的工具条让用户来关闭报表以及使用某些API函数来移除预览窗口上的标题栏。使用这种方法,一旦最大化报表,预览窗口将占据整个access的屏幕窗口而不出现允许复原按钮恢复原来窗口的大小以及不出现其它按钮。

涉及的使用步骤如下:

1. 在每个报表的Deactivate事件处理程序中写入: 

DoCmd.Close acReport, Me.Name

2. 在一个总是打开的主菜单中放置一个唯一的退出数据库的按钮,并在引用报表的窗口(frmStart)中定义:
Dim CanClose as Integer

在窗体的Open事件处理程序中写入: 
CanClose = 0

在窗体的Unload事件处理程序中写入: 
If Not CanClose Then
    Cancel = True
    Forms!frmStart.Visible = True
    'form is hidden when report is previewed
    DoCmd.SelectObject acForm, "frmStart"
    CloseForms
    CloseReports
    ' CloseForms and CloseReports close any open objects
    ' other than frmStart

End If

3. 使用每个窗体的Open事件处理程序写入DoCmd.Maximize。
4. 为打印建立一个定置的工具条,放置关闭以及其它的功能按钮。设置报表的菜单为"-1",在工具条上做两个限制用户使用的操作。
5. 使用下面的代码预览报表:

DoCmd.OpenReport "TheReport", acViewPreview,...
Call sRemoveCaption(Reports("TheReport")

这样的话,用户就能:

  1. 看到报表 
  2. 在工具条操作
  3. 最小化access

  好了,如果用户想关闭access,可以主菜单来做到,但在报表预览窗口没有最小化、最大化以及关闭按钮。

'********************* Code Start ************************
'This code was originally written by Terry Kreft & Keri Hardwick.
'It is not to be altered or distributed,
'except as part of an application.
'You are free to use it in any application,
'provided the copyright notice is left unchanged.
'
'Code Courtesy of
'Terry Kreft & Keri Hardwick
'

Private Type RECT  '  16  Bytes
    left As Long
    top As Long
    right As Long
    bottom As Long
End Type
 
Private Declare Function apiGetWindowLong Lib "User32" _
    Alias "GetWindowLongA" _
    (ByVal hwnd As Long, _
    ByVal nIndex As Long) _
    As Long
 
Private Declare Function apiSetWindowLong Lib "User32" _
    Alias "SetWindowLongA" _
    (ByVal hwnd As Long, _
    ByVal nIndex As Long, _
    ByVal dwNewLong As Long) _
    As Long
 
Private Declare Function apiGetWindowRect Lib "User32" _
    Alias "GetWindowRect" _
    (ByVal hwnd As Long, _
    lpRect As RECT) _
    As Long
 
Private Declare Function apiGetSystemMetrics Lib "User32" _
    Alias "GetSystemMetrics" _
    (ByVal nIndex&) _
    As Long
 
Private Declare Function apiReleaseDC Lib "User32" _
  Alias "ReleaseDC" _
  (ByVal hwnd As Long, _
  ByVal hDC As Long) _
  As Long
 
Private Declare Function apiGetDeviceCaps Lib "Gdi32" _
    Alias "GetDeviceCaps" _
    (ByVal hDC As Long, _
    ByVal nIndex As Long) _
    As Long
 
Private Declare Function apiGetDC Lib "User32" _
    Alias "GetDC" _
    (ByVal hwnd As Long) _
    As Long
 
Private Declare Function IsZoomed Lib "User32" _
    (ByVal hwnd As Long) As Long
 
Private Declare Function ShowWindow Lib "User32" _
    (ByVal hwnd As Long, _
    ByVal nCmdShow As Long) As Long
 
Private Declare Function MoveWindow Lib "User32" _
    (ByVal hwnd As Long, _
    ByVal x As Long, _
    ByVal Y As Long, _
    ByVal nWidth As Long, _
    ByVal nHeight As Long, _
    ByVal bRepaint As Long) As Long
 
Private Declare Function GetParent Lib "User32" _
    (ByVal hwnd As Long) As Long
 
'Use following instead of GetWindowRect
Private Declare Function GetClientRect Lib "User32" _
    (ByVal hwnd As Long, _
    lpRect As RECT) As Long
 
Public Const SW_MAXIMIZE = 3
Public Const SW_SHOWNORMAL = 1
Private Const GWL_EXSTYLE = -20
Private Const GWL_HINSTANCE = -6
Private Const GWL_HWNDPARENT = -8
Private Const GWL_ID = -12
Private Const GWL_STYLE = -16
Private Const GWL_USERDATA = -21
Private Const GWL_WNDPROC = -4
Private Const WS_CAPTION = &HC00000
Private Const WS_SYSMENU = &H80000
Private Const SM_CYCAPTION = 4  ' Height of caption or title
Private Const TWIPSPERINCH = 1440
'**  Window Style Constants
Private Const WS_DLGFRAME& = &H400000
Private Const WS_THICKFRAME& = &H40000

Sub aTest()
    DoCmd.OpenReport "Report1", acViewPreview
    Call sRemoveCaption(Reports!Report1)
End Sub
 
Private Sub MaximizeRestoredReport(R As Report)
'This code was originally written by Terry Kreft
'Full credits and acknowledgements to him.
'

Dim MDIRect As RECT
    ' If the Report is maximized, restore it.
    If IsZoomed(R.hwnd) <> 0 Then
        ShowWindow R.hwnd, SW_SHOWNORMAL
    End If
 
    
' Get the screen coordinates and window size of the
    ' MDIClient area.
    'This is the line which is different

    GetClientRect GetParent(R.hwnd), MDIRect
 
    
' Move the Report to the upper left corner of the MDIClient
    ' window (0,0) and size it to the same size as the
    ' MDIClient window.

 
    MoveWindow R.hwnd, 0, 0, MDIRect.right - MDIRect.left, _
        MDIRect.bottom - MDIRect.top, True
End Sub
 
Sub sRemoveCaption(rpt As Report)
 
Dim lngRet As Long, lngStyle As Long
Dim tRECT As RECT, lngX As Long
Dim lngCaptionWidth As Long
Dim lngLeft As Long
Dim lngTop As Long
Dim lngWidth As Long
Dim lngHeight As Long
 
    lngRet = apiGetWindowLong(rpt.hwnd, GWL_STYLE)
    lngStyle = (lngRet Xor WS_DLGFRAME Xor _
                    WS_THICKFRAME) And Not WS_CAPTION
    'Need the Xor above to keep window from being sizable
    lngRet = apiSetWindowLong(rpt.hwnd, GWL_STYLE, lngStyle)
    lngX = apiGetWindowRect(rpt.hwnd, tRECT)
 
    
'have to resize the form now
    'how much was caption's screenspace

    lngCaptionWidth = apiGetSystemMetrics(SM_CYCAPTION)
 
    With tRECT
        lngLeft = .left
        lngTop = .top
        lngWidth = .right - .left
        lngHeight = .bottom - .top - lngCaptionWidth
        ConvertPIXELSToTWIPS lngLeft, lngTop
        ConvertPIXELSToTWIPS lngWidth, lngHeight
        DoCmd.SelectObject acReport, rpt.Name, False
        DoCmd.Restore
        DoCmd.MoveSize lngLeft, lngTop, lngWidth, lngHeight
    End With
 
    'now use Terry's code here
    Call MaximizeRestoredReport(rpt)
 End Sub
 
Sub ConvertPIXELSToTWIPS(x As Long, Y As Long)
    'From the KB
    Dim hDC As Long, hwnd As Long, RetVal As Long
    Dim XPIXELSPERINCH, YPIXELSPERINCH
    Const LOGPIXELSX = 88
    Const LOGPIXELSY = 90
 
    hDC = apiGetDC(0)
    XPIXELSPERINCH = apiGetDeviceCaps(hDC, LOGPIXELSX)
    YPIXELSPERINCH = apiGetDeviceCaps(hDC, LOGPIXELSY)
    RetVal = apiReleaseDC(0, hDC)
    x = (x / XPIXELSPERINCH) * TWIPSPERINCH
    Y = (Y / YPIXELSPERINCH) * TWIPSPERINCH
End Sub
'************************ Code End **************************

翻译: access数据库 朱亦文


来 源 于:MVPS: The access Web


(报表设计-相关文章技巧链接):
Access判断报表有否数据及打开时让报表最大化
发布人:zhuyiwen…-Accessfaq  
分享到:
点击次数:  更新时间:2004-11-23 22:02:37  【打印此页】  【关闭】
上一条:如何确定当前屏幕分辨率  下一条:跳过Autoexec宏(自动执行宏)



相关文章

  • • Access中窗体或者报表页眉和页面页眉的区别,窗体页脚和页面页脚的区别
  • • Access报表文本框按字数同步缩放
  • • Access报表打印设置
  • • Access报表补空行代码
  • • 懒人有懒计——浅谈自动报表
  • • Access使用excel输出复杂报表
  • • 报表每页打印到一定行数自动分页
  • • 解决Access在页面设置中设置边距无法保存的问题

热门文章

  • [2003-12-06] 新手来看:在报表中不显示重复的内容access数据库
  • [2010-03-23] 用SQL语句简单实现Access与Excel的联系access数据库
  • [2003-12-06] 创建完美报表access数据库
  • [2009-04-22] 支票打印的日期大写问题Access2007access数据库
  • [2003-12-12] ACCESS数据库中的中文报表制作access数据库
  • [2003-12-06] 直接使用print输出字符构成报表一例access数据库

热门产品

公司动态|在线留言|在线反馈|友情链接|会员中心|站内搜索|网站地图

中山市天鸣科技发展有限公司 版权所有 1999-2023 粤ICP备10043721号

QQ:18449932

Access应用 Access培训 Access开发 Access平台

access|数据库|access下载|access教程|access视频|access软件

Powered by MetInfo 5.3.12 ©2008-2025  www.metinfo.cn