PDA

Vollständige Version anzeigen : Fenster


Karsten68
27.09.2005, 16:36
Hallo Leute, habe mal eine Frage zu der ich so nichts finden konnte.

Ich habe ein Formular, dass ich im Vollbildmodus(maximiert) betreiben möchte.

jetzt möchte ich ein weiteres Formular einblenden das aber viel kleiner ist.
(für optionen usw.)

z.Zt. wird dieses auch maximiert dargestellt.

Kann mir da jemand helfen.

J_Eilers
27.09.2005, 16:45
Hi,

mit einem DoCmd.Restore (bin ich mir gerade nicht ganz sicher) oder einem DoCmd.MoveSize kannst du die Fenstergröße verändern oder selber festlegen. Näheres findest du auch in der Hilfe.

Karsten68
28.09.2005, 11:04
Hallo J.Eilers
meine Frage ist noch nicht so ganz beantwortet.
Kann man ein Formular maximiert anzeigen und gleichzeitig ein anderes in individueller Größe?

Mit MoveSize müsste ich so arbeiten, dass ich den Rahmen des großen Forms weglasse, es direkt unterhalb der Symbolleisten Positioniere und die Größe fix vorgebe.
Daraus ergeben sich zwei weitere Fragen.

Kann ich auch die Größe und Pos. vom AccessFenster selbst, definieren?
oder kann ich die Bildlaufleisten vom AccessFenster selbst, verhindern ?
Gruß Karsten

molnar
28.09.2005, 11:29
Nein. Wird ein Fenster maximiert, gilt das automatisch für alle Fenster. Wenn Du die Fenstergröße des "maximierten" Formulars auf den im Access-Hauptfenster verfügbaren Platz einstellst, statt es zu maximieren (kann man auch automatisieren), kannst Du das andere Formular kleiner anzeigen.

Gruß,
Reinhard

J_Eilers
28.09.2005, 11:30
Beim Accessfenster bin ich überfragt. Mit der Platzierung ist das so eine Sache, da die Angabe in Pixel gemacht wird und somit die Positionierung von der Auflösung abhängt und IMHO kann man auch nur alle Objekte gleich wiedergeben. Also entweder alle maximiert oder alle individuell.

molnar
28.09.2005, 11:38
Hier noch ein bißchen Code zum Positionieren von Fenstern:

Public Type Rect
XMin As Long
YMin As Long
XMax As Long
YMax As Long
End Type

' Absolute Koordinaten des Fensters ermitteln
Public Declare Function GetWindowRectAbs Lib "user32" Alias "GetWindowRect" _
(ByVal Hwnd As Long, _
ByRef WRect As Rect) As Long

' Fenster relativ zum übergeordneten Fenster positionieren
Public Declare Function MoveWindowRel Lib "user32" Alias "MoveWindow" _
(ByVal Hwnd As Long, _
ByVal X As Long, _
ByVal Y As Long, _
ByVal Width As Long, _
ByVal Height As Long, _
ByVal Repaint As Long) As Long

' Fensterhandle des übergeorneten Fensters (Parent) ermitteln
Public Declare Function GetParent Lib "user32" _
(ByVal Hwnd As Long) As Long

' Fensterkoordinaten relativ zum übergeordneten Fenster ermitteln
Public Function GetWindowRect(Hwnd As Long, WRect As Rect) As Long
Dim PRect As Rect ' Koordinaten Parent Window
Dim Ok As Long
Ok = GetWindowRectAbs(GetParent(Hwnd), PRect)
Ok = Ok And GetWindowRectAbs(Hwnd, WRect)
WRect.XMin = WRect.XMin - PRect.XMin - 2
WRect.XMax = WRect.XMax - PRect.XMin - 2
WRect.YMin = WRect.YMin - PRect.YMin - 2
WRect.YMax = WRect.YMax - PRect.YMin - 2
End Function

' Fenster relativ zum übergeordneten Fenster positionieren
Public Function SetWindowRect(Hwnd As Long, WRect As Rect) As Long
SetWindowRect = MoveWindowRel(Hwnd, WRect.XMin, WRect.YMin, WRect.XMax - WRect.XMin, WRect.YMax - WRect.YMin, 1)
End Function

Den Code zum Positionieren kannst Du in der Ereignisprozedur "Beim Öffen" und ggf. "Bei Größenänderung" einbauen.

Gruß,
Reinhard

Karsten68
29.09.2005, 13:28
hallo molnar,
Danke für deinen Code, ich glaube das ist z.Zt. noch zuviel für mich, das krieg ich noch nicht hin.
Ich habe also die Größe des Forms über MoveSize fix festgelegt.

Trotzdem Frage ich nochmal weiter.

Kann man irgendwie die Größe(Nur Höhe und Breite) des AccessAnwendungsfensters ermitteln und in einem Textfeld darstellen?
Gruß K.

J_Eilers
29.09.2005, 13:42
AFAIK Nein. Du kannst das andere Formular höchstens in einem Unterformularsteuerelement anzeigen.

JörgG
29.09.2005, 13:54
Hallo Karsten,

eine Möglichkeit wäre noch das kleine Formular als PopUp zu definieren (siehe Formular-Eigenschaftsfenster - Register - "Andere" - "PopUp" = ja), dann kannst Du für dieses problemlos mit DoCmd.MoveSize hantieren während das Andere maximiert bleibt.

molnar
29.09.2005, 15:13
Der folgende Code basiert auf den von mir bereitgestellten Funktionen (man muß sie einfach in einen Modul kopieren, damit sie überall verwendet werden können):

Dim PRect As Rect
Dim Breite as Long
Dim Höhe As Long
Dim Ok As Long

Ok = GetWindowRectAbs(GetParent(Me.Hwnd), PRect)
Breite = PRect.XMax - PRect.XMin
Höhe = PRect.YMax - PRect.YMin

Wenn Du obigen Code von einem Hauptformular aus aufrufst, erhälst Du in Breite und Höhe die Maße des Bereiches, den Access für die Anwendung zur Verfügung stellt. Die Anwendungsfenster müssen allerdings immer einen Abstand von 2 Pixeln zum Rand einhalten.

Gruß,
Reinhard

Karsten68
29.09.2005, 15:23
Hallo Joerg,
so einfach kann das Leben sein. Danke trotzdem an die Anderen, möchte aber nochmal darauf hinweisen das Beitrag #4 denmach nicht stimmt. Nur für alle die das irgendwann mal lesen.
Ein Formular maximieren und
ein anderes als Popup definieren und schon gehts
Super

molnar
29.09.2005, 15:35
Stimmt. PopUps kann man trotz Maximierung kleiner anzeigen. Alle anderen Fenster (Formulare, Tabellen usw.) werden aber maximiert dargestellt, sobald man ein Fenster maximiert. Für Deinen Spezialfall gab es also eine einfachere Lösung. Sorry, daß ich nicht daran gedacht habe.

Reinhard