设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[宏/菜单/工具栏] 如何让软件适用于不同的分辨率的显示器

[复制链接]
跳转到指定楼层
1#
发表于 2003-6-11 00:11:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如何让软件适用于不同的分辨率的显示器[glow=255,red,2]文字[/glow]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2003-6-11 08:04:00 | 只看该作者
有必要吗?举出几个分辨率影响的例子来
3#
发表于 2003-6-11 08:24:00 | 只看该作者
她的意思大概是这样的:
在1021X768的显示器上做出的窗体(全屏的)在800X600会显示的不完整,反之,会显示的较小。除非你做成弹出式的窗体!但是那样在空间上又有居限!
4#
发表于 2003-6-11 17:40:00 | 只看该作者
我用过,我用的不是很成熟,不好意思。
5#
发表于 2003-6-11 18:07:00 | 只看该作者
作    者:Microsoft  
发布日期:2002年11月8日
摘    要:这篇文章中的信息适用于:
Microsoft Access 2000
本文说明如何创建用户定义的样例 Visual Basic for Applications 函数以确定当前屏幕分辨率。您可以使用本函数确定是在标准 VGA 模式 (640 x 480) 还是在 Super VGA 模式(800 x 600、1024 x 768 或 1600 x 1200)下运行。

正    文:

    下面的示例说明如何创建并使用样例 GetScreenResolution() 函数。

    备注:您可能有某些在现有 Microsoft Access 库中定义的 Microsoft Windows API 函数;因此,您的声明可能被重复。如果您收到重复过程名称错误消息,请在代码中删除或注释出声明语句。

    新建模块,然后键入下列“声明”和函数:
'*****************************************************************
' DECLARATIONS SECTION
'*****************************************************************

Option Explicit

Type RECT
   x1 As Long
   y1 As Long
   x2 As Long
   y2 As Long
End Type

' NOTE: The following declare statements are case sensitive.


Declare Function GetDesktopWindow Lib "User32" () As Long
Declare Function GetWindowRect Lib "User32" _
      (ByVal hWnd As Long, rectangle As RECT) As Long

'*****************************************************************
' 函数: GetScreenResolution()
'
' 目的:
'   来确定当前屏幕的大小或分辨率
'
' 返回:
'   当前屏幕分辨率,下列为典型值:
'      640 x 480
'      800 x 600
'     1024 x 768
'
'*****************************************************************
Function GetScreenResolution () as String

   Dim R As RECT
   Dim hWnd As Long
   Dim RetVal As Long

   hWnd = GetDesktopWindow()
   RetVal = GetWindowRect(hWnd, R)
   GetScreenResolution = (R.x2 - R.x1) & "x" & (R.y2 - R.y1)

End Function



    在视图菜单上,单击立即窗口。
    在“立即窗口”中键入下行命令,然后按 ENTER 键:
    ? GetScreenResolution()


    注意:当前屏幕分辨率显示在“立即窗口”中。如果当前分辨率是标准 VGA,则在“立即”窗口中显示下列内容:
    640x480

QQ:27272328
6#
发表于 2003-6-11 18:13:00 | 只看该作者

一个日本人写的模块

'☆★☆★☆★☆★☆★☆★☆★☆★☆★

'开发分辨率不变的设置  捆您的开发状态!

Const DesignSize = 1024

'☆★☆★☆★☆★☆★☆★☆★☆★☆★

'API宣言
Declare Function GetDesktopWindow Lib "User32" () As Long

Declare Function GetWindowRect Lib "User32" (ByVal hWnd As Long, rectangle As RECT) As Long



'Type宣言
Type RECT

    x1 As Long

    y1 As Long

    x2 As Long

    y2 As Long

End Type



'国标码宣言
Dim frm As Form

Dim ctrl As Control

Dim prp As Property

Dim rat As Double

Dim flgSec

Dim X As Long

Dim WinHeight As Long

Dim hWnd As Long

Dim ret As Long

Dim i As Integer

Dim R As RECT

Dim SizeL As Long

Dim SizeT As Long

Dim SizeW As Long

Dim SizeH As Long





'--------------------------------------------------------------------------------

Public Function FormResiz_OnOpen(parFrm As Form, Optional perSizeL As Long, Optional perSizeT As Long, Optional perSizeW As Long, Optional perSizeH As Long)

'设计本身变图、开偶尔大小调整(现在的显示器分辨率使合)

'表单的开集会从Call请



'参数关于

' Me           = 表单那个东西

' Optional参数 = 元(原来)々 Docmd.MoveSize使地方与大小指定正在做表单的时、

'                那个价也现在分辨率合不计算问稀有的祈祷、那样的表单

'                Docmd.MoveSize何况……乎持马缰的手、这函数呼唤奇怪后参数把……粘上请

'                常例) Call FormResiz_OnOpen(Me, 113, 113, 11623, 7371)

'                Docmd.MoveSize使没表单

'                常例) Call FormResiz_OnOpen(Me)

'                泥搂。





'控制的属性直接指定后背图格尔号格尔号正在转的是、

'变更了不抚养时或、另外能变更属性有酿不弄清为了

'各自调整的柯托皮





'##留意标点(叫做吗、暧昧叫做吗、分辩叫做吗、、、的部分^^;)

' ·最初、普通的显示器开发底下应该……、液晶显示器表示了只有

'  不管怎么样表示神色瓜子久那っ又……又使安静下来。

'  的因为、因此弹OK这种东西事情没想。

'  使用腹足类炉缸人各自调整请。

' ·1024开发底下应该……800的分辨率表示这种东西事情、「细小策划」结。

'  1024字体大小10之类的话控制、单纯计算78%细小策划结因为

'  字体大小7.8要点腹足类里磨(吉ゃ搓)。祈望周知。



' ##叫做意义「参阅文献」作为使请篱笆 m(_ _;)m

'

On Error Resume Next

   

    Set frm = parFrm

   

    '窗口驾驶盘的取得
    hWnd = GetDesktopWindow()

    '现在分辨率取得
    ret = GetWindowRect(hWnd, R)

    '比例计算 常例:现在800 开发1024 800/1024 = 0.78加倍
    X = (R.x2 - R.x1)

    rat = X / DesignSize

        

    SizeL = 0: SizeT = 0: SizeW = 0: SizeH = 0

    If Not IsEmpty(perSizeL) = True Then

       SizeL = perSizeL * rat

       SizeT = perSizeT * rat

       SizeW = perSizeW * rat

       SizeH = perSizeH * rat

    End If

        

    '现在分辨率=开发分辨率如果终了
    If X = DesignSize Then Exit Function

   

    If X < DesignSize Then

        '细小策划时、控制>部分>表单的次序
        Call ChangeCtrl

        Call ChengeSec

        Call ChangeFrm

      Else

        '大掬取时、表单>部分>控制的次序
        Call ChangeFrm

        Call ChengeSec

        Call ChangeCtrl

    End If

   

    '最后、表单的使清新
    frm.Refresh

    Exit Function





End Function







'--------------------------------------------------------------------------------

Private Sub ChangeCtrl()

On Error Resume Next



        '控制转
        For Each ctrl In frm.Controls

            '属性转
            For Each prp In ctrl.Properties

                '大小·配置关于属性被发现们压缩
                Select Case prp.Name

                  Case "FontSize", "DatasheetFontHeight"

                    '通常计算假如行…情况之下的 +0.5 之类的话不需要是…但…、

                    '捆Zo~Ma办法。稍微心情坏因为 +0.5
                    prp.Value = Fix(prp.Value * rat + 0.5)

                  Case "FontWeight"

                    prp.Value = Fix((prp.Value * rat) / 100) * 100

                  Case "Left", "Top", "Width", "Height"

                    prp.Va
7#
发表于 2003-6-11 18:54:00 | 只看该作者
在窗体大小发生改变的事件中设置各个控件的位置,我觉得商业软件好象都是这样的
8#
发表于 2003-6-12 07:47:00 | 只看该作者
大哥:
可以说的通俗易懂一点吗?
我怎么还是觉得没有找到解决的办法呀!
9#
发表于 2003-6-12 20:18:00 | 只看该作者
最好做个范例,方便学习,谢谢
10#
发表于 2003-6-15 06:07:00 | 只看该作者
版主:
可否做个范例让我们学习学习!
谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-15 00:59 , Processed in 0.090759 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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