PDA

Vollständige Version anzeigen : Bildschirm auflösung


andrew007
28.08.2001, 14:06
Hallo zusammem,

ich hoffe hierm kann mir jemand bei folgendem Problem helfefn.

Ich habe eine Datenbank, die im Netzwerk genutzt wird. Leider benutzen die USER unteschiedliche Auflösungen. Wie schaffe ich es, daß access automatisch angepasst wird, oder, daß access automatisch die Auflösung ändert.

Vielen dank
Andrew007

Pittchen
28.08.2001, 14:19
Hey andrew,
die Bildschirmauflösung ermittelst du mit der folgenden API-Funktion:
Declare Function GetSystemMetrics Lib "user32" (ByVal nindex As Long) As Long
Public Const SM_CXSCREEN = 0
Public Const SM_CYSCREEN = 1

Function AufloesungX() As Integer
AufloesungX = GetSystemMetrics(SM_CXSCREEN)
End Function

Function AufloesungY() As Integer
AufloesungY = GetSystemMetrics(SM_CYSCREEN)
End Function

Deine Formulare kannst Du dann -auflösungsabhängig- einstellen

Private Sub Form_Load()
If AufloesungX() >= 800 Then
DoCmd.MoveSize 10, 10, 10000, 5000
Else
DoCmd.MoveSize 10, 10, 5000, 2500
End If
End Sub

Gefunden hab' ich das in einer Werbebroschüre des Fachverlags für Computerwissen in 53095 Bonn

Gruß Pittchen

hermi
28.08.2001, 14:27
hi Andrew,

hier eine weitere Möglichkeit:

erstelle ein Modul mit folgendem Inhalt und ruf die Funktion
"BildschirmauflösungSetzen" beim Programmstart auf.
Bei Programmende (evtl. mit SchliessenSchaltfläche) die
Funktion"BildschirmauflösungZurückSetzen" rufen.
Damit wird dein Programm immer mit der Auflösung 800x600
gestartet. Ist der Rechner anders eingestellt, wird auf
diese Auflösung geschaltet. Nach Programmende wird in die ursprüngliche Auflösung zurückgesetzt.
Hier nun der Inhalt des Moduls (kannste 800x600 nennen):

Option Compare Database
Option Explicit
Public Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Public Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" _
(ByVal lpszDeviceName As Long, ByVal iModeNum As Long, lpDevMode As Any) As Boolean
Public Declare Function ChangeDisplaySettings Lib "user32" Alias "ChangeDisplaySettingsA" _
(lpDevMode As Any, ByVal dwFlags As Long) As Long
Public Horizontal As Long
Public Vertikal As Long
Dim DevM As DEVMODE
Dim Ergebnis As Long
Public Auflösung_X_SCREEN
Public Auflösung_Y_SCREEN
Const CCDEVICENAME = 32
Const CCFORMNAME = 32
Const DM_PELSWIDTH = &H80000
Const DM_PELSHEIGHT = &H100000
Const DM_DISPLAYFREQUENCY = &H400000
Const CDS_UPDATEREGISTRY = &H1
Const CDS_TEST = &H4
Const DISP_CHANGE_SUCCESSFUL = 0
Const SM_CXSCREEN = 0
Const SM_CYSCREEN = 1
Type DEVMODE
dmDeviceName As String * CCDEVICENAME
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * CCFORMNAME
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Public Function ursprünglicheAuflösung()

Auflösung_X_SCREEN = GetSystemMetrics(SM_CXSCREEN)
Auflösung_Y_SCREEN = GetSystemMetrics(SM_CYSCREEN)
End Function
Public Function BildschirmauflösungSetzen()
EnumDisplaySettings 0&, 0&, DevM
With DevM
.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT Or DM_DISPLAYFREQUENCY
.dmPelsWidth = 800
.dmPelsHeight = 600
.dmDisplayFrequency = 85
End With
Ergebnis = ChangeDisplaySettings(DevM, CDS_TEST)
If (Ergebnis And DISP_CHANGE_SUCCESSFUL) <> 0 Then
' Erfolgreich - Änderung in der Registry ablegen
ChangeDisplaySettings DevM, 0& 'CDS_UPDATEREGISTRY
End If
End Function
Public Function BildschirmauflösungZurückSetzen()
EnumDisplaySettings 0&, 0&, DevM
With DevM
.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT Or DM_DISPLAYFREQUENCY
.dmPelsWidth = Auflösung_X_SCREEN
.dmPelsHeight = Auflösung_Y_SCREEN
.dmDisplayFrequency = 85
End With
Ergebnis = ChangeDisplaySettings(DevM, CDS_TEST)
If (Ergebnis And DISP_CHANGE_SUCCESSFUL) <> 0 Then
' Erfolgreich - Änderung in der Registry ablegen
ChangeDisplaySettings DevM, 0& 'CDS_UPDATEREGISTRY
End If
End Function

cu hermi