设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[窗体] 将窗体放大至全屏是如何使窗体中的控件也随之调整

[复制链接]
跳转到指定楼层
1#
发表于 2008-7-17 16:18:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题!请教高手!
        将窗体放大至全屏是如何使窗体中的控件也随之调整
  尤其是高度!
谢谢!!!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2008-12-27 12:12:32 | 只看该作者
關注中!
3#
发表于 2008-12-27 20:02:20 | 只看该作者
读取子窗体和控件与主窗体尺寸比例,然后调整大小事件中按比例改变窗体和控件尺寸,但实际效果不好。

这是其它论坛下载的,其中有你要的东西。我试过,效果不是太好。



Option Compare Database
Option Explicit
'*** FUNKTION RESIZECONTROLS
'*** geschrieben von Joachim Werning
'*** e-mail: joachim.werning@firemail.de
'*** 躡ergabewerte:
'***    Formular as Form            'Das betroffene Formular, meistens "Me"
'***    StartFormularbreite as Long 'Die Breite des Formulars VOR der 膎derung
'***    StartFormularh鰄e as Long   'Die H鰄e des Formulars VOR der 膎derung
'***                                'Breite und H鰄e m黶sen vorher irgendwie im Formular
'***                                'hinterlegt werden (durch Textfeld oder VBA-Variable).
'*** Empfehlung:
'*** Es wird empfohlen nur TrueType-Fonts zu verwenden, da
'*** sie gleichm溥iger vergr鲞ert werden.
'*** Beschreibung:
'*** Diese Funktion ver鋘dert alle Steuerelemente
'*** relativ zu einer Fenstergr鲞en鋘derung.
'*** Damit die Funktion funktioniert mu?
'*** die Ausgangsbreite und -h鰄e des Formulars 黚ergeben
'*** werden, da sich daraus der Faktor berechnet.
'*** Es wird nur der Faktor aus der Breiten鋘derung berechnet
'*** und zugrundegelegt.
Public Sub ResizeControls(Formular As Form, ByVal StartFormularbreite As Long, ByVal StartFormularh鰄e As Long)
    Dim CHANGE_FACTOR As Double
    Dim CHANGE_CONTROL As Control
   
    If Not Formular.WindowWidth = 0 Then
        
        '*** Ich mache die 膎derung nur an der Breite fest
        CHANGE_FACTOR = Formular.WindowWidth / StartFormularbreite
               
        If Not CHANGE_FACTOR = 1 Then
        
            On Error Resume Next  '*** Nicht ganz die feine Art, ich wei?
            
            '*** Bei Vergr鲞erungen mu?erst der Bereich vergr鲞ert werden,
            '*** weil sonst ein Element 黚er den Bereich hinausragt
            '*** und einen Fehler produziert (nicht ver鋘dert wird).
            If CHANGE_FACTOR > 1 Then
                Formular.Section(0).Height = Formular.Section(0).Height * CHANGE_FACTOR
                Formular.Section(1).Height = Formular.Section(1).Height * CHANGE_FACTOR
                Formular.Section(2).Height = Formular.Section(2).Height * CHANGE_FACTOR
            End If
            For Each CHANGE_CONTROL In Formular.Controls
            
                If CHANGE_CONTROL.ControlType = acSubform Then
                    Dim UFOBREITE As Integer
                    Dim UFOH諬E As Integer
                    UFOBREITE = CHANGE_CONTROL.Width
                    UFOH諬E = CHANGE_CONTROL.Height
                    CHANGE_CONTROL.Width = CHANGE_CONTROL.Width * CHANGE_FACTOR
                    CHANGE_CONTROL.Height = CHANGE_CONTROL.Height * CHANGE_FACTOR
                    CHANGE_CONTROL.Top = CHANGE_CONTROL.Top * CHANGE_FACTOR
                    CHANGE_CONTROL.Left = CHANGE_CONTROL.Left * CHANGE_FACTOR
                    ResizeControls CHANGE_CONTROL.Form, UFOBREITE, UFOH諬E
                Else
                    CHANGE_CONTROL.Width = CHANGE_CONTROL.Width * CHANGE_FACTOR
                    CHANGE_CONTROL.Height = CHANGE_CONTROL.Height * CHANGE_FACTOR
                    CHANGE_CONTROL.Top = CHANGE_CONTROL.Top * CHANGE_FACTOR
                    CHANGE_CONTROL.Left = CHANGE_CONTROL.Left * CHANGE_FACTOR
                    CHANGE_CONTROL.FontSize = CHANGE_CONTROL.FontSize * CHANGE_FACTOR
                End If
                        
            Next
            
            '*** Bei Verkleinerungen darf der Bereich nat黵lich erst danach
            '*** ver鋘dert werden
            If CHANGE_FACTOR < 1 Then
                Formular.Section(0).Height = Formular.Section(0).Height * CHANGE_FACTOR
                Formular.Section(1).Height = Formular.Section(1).Height * CHANGE_FACTOR
                Formular.Section(2).Height = Formular.Section(2).Height * CHANGE_FACTOR
            End If
            
            Formular.Repaint
            
            On Error GoTo 0 '*** Ist eigentlich 黚erfl黶sig, oder nicht?
        
        End If
   
    End If
End Sub

[ 本帖最后由 todaynew 于 2008-12-27 20:16 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
4#
发表于 2008-12-27 20:06:41 | 只看该作者
论坛上有例子,搜索一下。
5#
发表于 2009-1-4 09:17:45 | 只看该作者
用total access components里的resize控件
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-1-6 04:36 , Processed in 0.099734 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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