Thema Datum  Von Nutzer Rating
Antwort
02.06.2004 14:02:53 Heiko
NotSolved
02.06.2004 15:27:50 Rasta
NotSolved
02.06.2004 16:28:18 Heiko
NotSolved
Blau Aw:Aw:Aw:Access Formulare Bildschirmgröße anpassen
02.06.2004 16:47:24 Rasta
NotSolved
03.06.2004 15:26:21 Heiko
NotSolved
03.06.2004 16:22:55 Rasta
NotSolved
Rot A00
04.06.2004 09:09:49 Heiko
NotSolved
03.06.2004 16:42:35 Rasta
NotSolved

Ansicht des Beitrags:
Von:
Rasta
Datum:
02.06.2004 16:47:24
Views:
3180
Rating: Antwort:
  Ja
Thema:
Aw:Aw:Aw:Access Formulare Bildschirmgröße anpassen
hallo heiko,

ich habe gesucht und gefunden. du bindest dir einfach eine klasse in dein vb/vba-rpojekt und schreibst darin folgendes

'*******************************************************************************
' Resizer (Class)
'
' Author : Sven Maes
' mail.me@vt4.net
'
' DESCRIPTION:
' This class resizes all controls on the form
'
' usage :
' in the form, add a reference to clsResizer
' in the form, declare a new resizerclass
' in form_load : set resizer.frmtosize = me
' in form_resize : resizer.adjustSize
' --> 1 resizer variable for each form !
'*******************************************************************************
Public Sub ResetForm()
setInitialFormPos
End Sub
Public Property Set frmToSize(frm As Object)
Set frmSize = frm
setInitialFormPos
End Property
Public Sub AddItemNotToResize(Itemname As String)
Dim i As Long

If Not frmset Then Exit Sub

For i = 0 To UBound(collSize)
If LCase(collSize(i).name) = LCase(Itemname) Then
collSize(i).name = ""
Exit For
End If
Next i


End Sub
Public Property Let ResizeFonts(rsf As Boolean)
doFonts = rsf
End Property


Private Sub setInitialFormPos()
'remember the relative size and position of the controls on the form
Dim objContr As Control
Dim i As Integer

If frmSize.Controls.Count = 0 Then Exit Sub

sngOrigHeight = frmSize.ScaleHeight
sngOrigWidth = frmSize.ScaleWidth
ReDim collSize(0 To frmSize.Controls.Count)
i = 0
For Each objContr In frmSize.Controls
If TTS(objContr) Then 'try to size
collSize(i).name = objContr.name
collSize(i).percHeight = objContr.Height / sngOrigHeight
collSize(i).percLeft = objContr.Left / sngOrigWidth
collSize(i).percTop = objContr.Top / sngOrigHeight
collSize(i).percWidth = objContr.Width / sngOrigWidth
If doFonts And TTF(objContr) Then
collSize(i).fontsize = objContr.Font.Size / sngOrigHeight
Else
collSize(i).fontsize = -1
End If
i = i + 1
Else
'move the object

'special objects
Select Case LCase(TypeName(objContr))
Case "timer"
'not possible to resize or to move
DoEvents
Case "line"
collSize(i).name = objContr.name
collSize(i).percLeft = objContr.X1 / sngOrigWidth
collSize(i).percWidth = objContr.X2 / sngOrigWidth
collSize(i).percTop = objContr.Y1 / sngOrigHeight
collSize(i).percHeight = objContr.Y2 / sngOrigHeight
i = i + 1
If doFonts And TTF(objContr) Then
collSize(i).fontsize = objContr.Font.Size / sngOrigHeight
Else
collSize(i).fontsize = -1
End If
Case Else
collSize(i).name = objContr.name
collSize(i).percLeft = objContr.Left / sngOrigWidth
collSize(i).percTop = objContr.Top / sngOrigHeight
collSize(i).percWidth = -1 'negative number -> move only
collSize(i).percHeight = -1
i = i + 1
If doFonts And TTF(objContr) Then
collSize(i).fontsize = objContr.Font.Size / sngOrigHeight
Else
collSize(i).fontsize = -1
End If
End Select
End If
Next
frmset = True
End Sub
Private Function TTS(obj As Control) As Boolean
'this function tests if the control is sizeable
On Error GoTo errhan

obj.Width = obj.Width
obj.Height = obj.Height

TTS = True
Exit Function
errhan:
TTS = False
End Function
Private Function TTF(obj As Control) As Boolean
'Try To size Font
On Error GoTo errhan

obj.Font.Size = obj.Font.Size

TTF = True
Exit Function
errhan:
TTF = False
End Function
Public Sub AdjustSize()

If Not frmset Then Exit Sub

Dim objContr As Control
Dim j As Integer

If frmSize.Controls.Count = 0 Then Exit Sub

sngOrigHeight = frmSize.ScaleHeight
sngOrigWidth = frmSize.ScaleWidth
j = 0
For Each objContr In frmSize.Controls
For j = 0 To UBound(collSize)
If collSize(j).name = objContr.name Then
If LCase(TypeName(objContr)) = "line" Then
objContr.X1 = collSize(j).percLeft * sngOrigWidth
objContr.X2 = collSize(j).percWidth * sngOrigWidth
objContr.Y1 = collSize(j).percTop * sngOrigHeight
objContr.Y2 = collSize(j).percHeight * sngOrigHeight
Else
'move should work
objContr.Left = collSize(j).percLeft * sngOrigWidth
objContr.Top = collSize(j).percTop * sngOrigHeight
If collSize(j).percHeight > 0 Then 'size only when possible
objContr.Width = collSize(j).percWidth * sngOrigWidth
objContr.Height = collSize(j).percHeight * sngOrigHeight
End If
End If

If doFonts And collSize(j).fontsize > 0 Then
objContr.Font.Size = IIf(Int(collSize(j).fontsize * sngOrigHeight) = 0, objContr.Font.Size, Int(collSize(j).fontsize * sngOrigHeight))
End If
End If
Next j
Next

End Sub

Private Sub Class_Initialize()
doFonts = False
frmset = False
End Sub


UND in deine form:

Option Explicit
Dim r As New resizer

Private Sub Form_Load()
'required
Set r.frmToSize = Me

End Sub

Private Sub Form_Resize()
'required
r.AdjustSize
End Sub


Quelle:

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=35720&lngWId=1&txtForceRefresh=6220041043279506

soit sollte die form, sich bei jedem resize anpassen....
hoffe es hilft


gruß

rasta


Heiko schrieb am 02.06.2004 16:28:18:

Hallo rasta,

schlecht wärs nicht, wenn du eine akzeptable Lösung finden würdest.

Heiko


Rasta schrieb am 02.06.2004 15:27:50:

hallo heiko,

in vba ist das ein kleines problem. ich würde das formular ohne maximize erstellen und dieses fest machen.
ansonsten brauchst du einen script/code der je nach position die steuerelemente an die richtige stelle schiebt.
habe so etwas noch nie selber benötigt, aber wenn du nicht anders kannst, versuche ich, die lösung für dich zu finden.

gruß

rasta

Heiko schrieb am 02.06.2004 14:02:53:

Hallo,

ich habe das Problem, dass mein in Acces erstelltes Hauptformular mit 19" Bildschir erstellt, mit kleineren Bildschirmen abgeschnitten wird und mit größeren Bildschirmen die Steuerelemente verschoben zum Original angezeigt werden. Kann man das irgendwie dynamisch anpassen, dass sich z.B. die Steuerelemente immer an der gleichen Stelle befinden, egal mit welchem Bildschirm das Programm ausgeführt wird? Das Formular muss als Dialog und möglichst maximiert geöfnet werden.

Kann mir da jemand helfen?

Heiko

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
02.06.2004 14:02:53 Heiko
NotSolved
02.06.2004 15:27:50 Rasta
NotSolved
02.06.2004 16:28:18 Heiko
NotSolved
Blau Aw:Aw:Aw:Access Formulare Bildschirmgröße anpassen
02.06.2004 16:47:24 Rasta
NotSolved
03.06.2004 15:26:21 Heiko
NotSolved
03.06.2004 16:22:55 Rasta
NotSolved
Rot A00
04.06.2004 09:09:49 Heiko
NotSolved
03.06.2004 16:42:35 Rasta
NotSolved