PDA

Vollständige Version anzeigen : Formularrahmen formatieren


Thomas2705
02.10.2009, 08:06
gegeben:

Formular popup
Rahmenart: dünn

Aufgabe:

Wie läßt sich die Höhe des Rahmens durch Code bestimmen. z.B. beim Laden des Form?

Immer wieder habe ich das Problem das die Höhe des Rahmens nicht mit der Höhe des Detailbereiches kooperiert und durch ewiges "spielen" aufeinander abgestimmt werden muß. Die Breite des Rahmens läßt sich doch auch durch Code definieren.

Atrus2711
02.10.2009, 08:17
Hi,
wie wärs mit Größe anpassen = Ja? Dann passt es automatisch.

Jede Größe, die du per VBA einstellst, ist von Auflösung/Windows-Schriftgröße uvm. abhöngig. Da ist jede "schöne" Konstellation auf einem anderen Rechner nicht mehr zu gebrauchen.

Thomas2705
02.10.2009, 08:22
Martin

Das war aber einfach.
Der Vollständigkeit halber müßte es doch aber trotzdem eine Löung als Code geben?!

Thomas

Atrus2711
02.10.2009, 08:33
Mglw. mit Docmd.MoveSize
ob das aber mit Dialogen auch funktioniert...?!

Thomas2705
02.10.2009, 08:37
Von Lanz Rudolf gab es am 20.11.2008 folgende Möglichkeit:

Hallo
hier kann mann Grösse und Position bestimmen
Formular auf dem Screen Positionieren
Aufruf der Positionieruns-Funktion:
Call FFrmPositionGroesse("NameDeinForm", 0.25, -0.5, 14, 3.7) ' Masse in cm
Das gleiche für einen Bericht(Vorschau):
TWIP Basiert auf der anglo-amerikanischen Längeneinheit Point (pt), bezeichnet ein Twip die Teilung „TWentieth of an Inch Point“, also 1/20 Punkt = 1/1440 Zoll. Das Twip ist eine extrem feine Masseinheit:
1 Twip = 0,0176389241667372 mm 1 mm = 56,6928 Twips
Fals es Probleme bei schnellen Rechner gibt hilft machmal.Das setze mal des TimerInterval im Load und im Timer-Ereignis wiederhole das Move und lösche das Intervall.

Public Function FFrmPositionGroesse(FrmName As String, _
Lcm As Double, Ocm As Double, _
Bcm As Double, Hcm As Double)
' Bracht Verweise auf DAO und ActivX
' TWIP / 1 Zoll = 1440 TWIP / 1 cm = 567 TWIP
‘ 1 Punkt = 20 Twip (14 Punkt = 280 Twip)
Call Forms(FrmName).Move((Lcm * 567), _
(Ocm * 567), _
(Bcm * 567), _
((Hcm + 1) * 567))
End Function
Lcm = Links in cm/ Ocm = Oben in cm / Bcm = Breite in cm/ Hcm = Höhe in cm

Public Function FRepPosUGroe (RepName As String, _
Lcm As Double, Ocm As Double, _
Bcm As Double, Hcm As Double)
Call Reports(RepName).Move((Lcm * 567), (Ocm * 567),_
(Bcm * 567), ((Hcm + 1) * 567))
End Function

Damit kann ich aber leider nicht viel anfangen.

Atrus2711
02.10.2009, 08:39
Steht doch da:

'Aufruf der Positionieruns-Funktion:
Call FFrmPositionGroesse("NameDeinForm", 0.25, -0.5, 14, 3.7) 'Maße in cm

Thomas2705
02.10.2009, 08:43
Ich meinte ja auch nicht das ich nicht lesen kann sondern das ich es nicht verstehe.
Ich verstehe nicht wohin diese Positionierungs fkt. kommt; in ein Ereignis?

Atrus2711
02.10.2009, 08:52
Der Aufruf der Routine kommt dahin, wo das Formular eingerichtet werden soll.

Die Routine selbst kommt in ein normales Modul in der Datenbank.

Wenn du genau hinguckst, merkst du auch, dass der eigentlich tätige VBA-Befehl ein Form.Move ist. Das ganze Drumrum ist nur Verpackung des Codes zur einheitlichen Verwendung.