从报表的预览窗口上移除最小化、最大化以及复原按钮,创建一个自定义的工具条让用户来关闭报表以及使用某些API函数来移除预览窗口上的标题栏。使用这种方法,一旦最大化报表,预览窗口将占据整个access的屏幕窗口而不出现允许复原按钮恢复原来窗口的大小以及不出现其它按钮。
正文:
从报表的预览窗口上移除最小化、最大化以及复原按钮,创建一个自定义的工具条让用户来关闭报表以及使用某些API函数来移除预览窗口上的标题栏。使用这种方法,一旦最大化报表,预览窗口将占据整个access的屏幕窗口而不出现允许复原按钮恢复原来窗口的大小以及不出现其它按钮。
涉及的使用步骤如下:
1.在每个报表的Deactivate事件处理程序中写入:
DoCmd.CloseacReport,Me.Name
2.在一个总是打开的主菜单中放置一个唯一的退出数据库的按钮,并在引用报表的窗口(frmStart)中定义:
DimCanCloseasInteger
在窗体的Open事件处理程序中写入:
CanClose=0
在窗体的Unload事件处理程序中写入:
IfNotCanCloseThen
Cancel=True
Forms!frmStart.Visible=True
'formishiddenwhenreportispreviewed
DoCmd.SelectObjectacForm,"frmStart"
CloseForms
CloseReports
'CloseFormsandCloseReportscloseanyopenobjects
'otherthanfrmStart
EndIf
3.使用每个窗体的Open事件处理程序写入DoCmd.Maximize。
4.为打印建立一个定置的工具条,放置关闭以及其它的功能按钮。设置报表的菜单为"-1",在工具条上做两个限制用户使用的操作。
5.使用下面的代码预览报表:
DoCmd.OpenReport"TheReport",acViewPreview,...
CallsRemoveCaption(Reports("TheReport")
这样的话,用户就能:
1.看到报表
2.在工具条操作
3.最小化access
好了,如果用户想关闭access,可以主菜单来做到,但在报表预览窗口没有最小化、最大化以及关闭按钮。
'*********************CodeStart************************
'ThiscodewasoriginallywrittenbyTerryKreft&KeriHardwick.
'Itisnottobealteredordistributed,
'exceptaspartofanapplication.
'Youarefreetouseitinanyapplication,
'providedthecopyrightnoticeisleftunchanged.
'
'CodeCourtesyof
'TerryKreft&KeriHardwick
'
PrivateTypeRECT'16Bytes
leftAsLong
topAsLong
rightAsLong
bottomAsLong
EndType
PrivateDeclareFunctionapiGetWindowLongLib"User32"_
Alias"GetWindowLongA"_
(ByValhwndAsLong,_
ByValnIndexAsLong)_
AsLong
PrivateDeclareFunctionapiSetWindowLongLib"User32"_
Alias"SetWindowLongA"_
(ByValhwndAsLong,_
ByValnIndexAsLong,_
ByValdwNewLongAsLong)_
AsLong
PrivateDeclareFunctionapiGetWindowRectLib"User32"_
Alias"GetWindowRect"_
(ByValhwndAsLong,_
lpRectAsRECT)_
AsLong
PrivateDeclareFunctionapiGetSystemMetricsLib"User32"_
Alias"GetSystemMetrics"_
(ByValnIndex&)_
AsLong
PrivateDeclareFunctionapiReleaseDCLib"User32"_
Alias"ReleaseDC"_
(ByValhwndAsLong,_
ByValhDCAsLong)_
AsLong
PrivateDeclareFunctionapiGetDeviceCapsLib"Gdi32"_
Alias"GetDeviceCaps"_
(ByValhDCAsLong,_
ByValnIndexAsLong)_
AsLong
PrivateDeclareFunctionapiGetDCLib"User32"_
Alias"GetDC"_
(ByValhwndAsLong)_
AsLong
PrivateDeclareFunctionIsZoomedLib"User32"_
(ByValhwndAsLong)AsLong
PrivateDeclareFunctionShowWindowLib"User32"_
(ByValhwndAsLong,_
ByValnCmdShowAsLong)AsLong
PrivateDeclareFunctionMoveWindowLib"User32"_
(ByValhwndAsLong,_
ByValxAsLong,_
ByValYAsLong,_
ByValnWidthAsLong,_
ByValnHeightAsLong,_
ByValbRepaintAsLong)AsLong
PrivateDeclareFunctionGetParentLib"User32"_
(ByValhwndAsLong)AsLong
'UsefollowinginsteadofGetWindowRect
PrivateDeclareFunctionGetClientRectLib"User32"_
(ByValhwndAsLong,_
lpRectAsRECT)AsLong
PublicConstSW_MAXIMIZE=3
PublicConstSW_SHOWNORMAL=1
PrivateConstGWL_EXSTYLE=-20
PrivateConstGWL_HINSTANCE=-6
PrivateConstGWL_HWNDPARENT=-8
PrivateConstGWL_ID=-12
PrivateConstGWL_STYLE=-16
PrivateConstGWL_USERDATA=-21
PrivateConstGWL_WNDPROC=-4
PrivateConstWS_CAPTION=&HC00000
PrivateConstWS_SYSMENU=&H80000
PrivateConstSM_CYCAPTION=4'Heightofcaptionortitle
PrivateConstTWIPSPERINCH=1440
'**WindowStyleConstants
PrivateConstWS_DLGFRAME&=&H400000
PrivateConstWS_THICKFRAME&=&H40000
SubaTest()
DoCmd.OpenReport"Report1",acViewPreview
CallsRemoveCaption(Reports!Report1)
EndSub
责任编辑:小草