Office中国论坛/Access中国论坛

标题: 将窗体放大至全屏是如何使窗体中的控件也随之调整 [打印本页]

作者: puppy1981    时间: 2008-7-17 16:18
标题: 将窗体放大至全屏是如何使窗体中的控件也随之调整
如题!请教高手!
        将窗体放大至全屏是如何使窗体中的控件也随之调整
  尤其是高度!
谢谢!!!
作者: zhaohuaw    时间: 2008-12-27 12:12
關注中!
作者: todaynew    时间: 2008-12-27 20:02
读取子窗体和控件与主窗体尺寸比例,然后调整大小事件中按比例改变窗体和控件尺寸,但实际效果不好。

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

[attach]34078[/attach]

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 编辑 ]
作者: Henry D. Sy    时间: 2008-12-27 20:06
论坛上有例子,搜索一下。
作者: slowgrace    时间: 2009-1-4 09:17
用total access components里的resize控件




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3