|
读取子窗体和控件与主窗体尺寸比例,然后调整大小事件中按比例改变窗体和控件尺寸,但实际效果不好。
这是其它论坛下载的,其中有你要的东西。我试过,效果不是太好。
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
|