Zentriertes Form?

Christoph1972

Erfahrenes Mitglied
Hallo,

ich habe kürzlich ein Programm für die Arbeit geschrieben. Nu gibt es z.T neue Monitore, die eine höhere Auflösung haben. Jetzt sieht mein Programm leider nicht mehr so schön aus, da es oben links im Bilschirm hängt:-(
Kann ich die Formulare in ein neues MDI-Form kopieren, welches die Eigenschaft zentrieren besitzt? Gibt es so etwas überhaupt? Klar das Programm ist dann nicht auf dem gesamten Bildschirm, aber wenigstens in der Mitte.

Was kann ich machen, was gibt es für Möglichkeiten?

Gruß

Christoph
 
Wenn du eine normale Form zentriert anzeigen lassen möchtest, dann stell die Eigenschaft "StartUpPosition" auf 2 (=Bildschirmmitte).
 
Wenn du das MDI wie schon erwähnt auf Bildschirmmitte stellst, dann werden alle Childforms automatisch wie vorher auch angepasst
 
So, Danke erst mal!

Es ist zwar nicht so wie ich mir es vorgestellt habe, aber so ist es immer noch alle male besser! Eigentlich sollte mein MDI im full screen starten, aber egal so geht es auch.

Gruß

Christoph
 
Hallo Christoph,

warum passt du deine Forms und die darin liegenden Controls nicht einfach an die Bildschirmauflösung an ?
Du ermittelst den X und Y Faktor mit dem die Abemessungen dann multipliziert werden.

bei Entwicklungsumgebung 800*600

XFaktor = Screen.Width / 12000
YFaktor = Screen.Height / 9000

bei Entwicklungsumgebung 1024*768

XFaktor = Screen.Width / 15360
YFaktor = Screen.Height / 11520

Damit die Hauptform auch genau auf den Bildschirm zentriert ist benutze ich ein Sysinfo Control.

Code:
    Form.Left = frmElab.SysInfo1.WorkAreaLeft
    Form.Width = frmElab.SysInfo1.WorkAreaWidth
    Form.Height = frmElab.SysInfo1.WorkAreaHeight
    Form.Top = frmElab.SysInfo1.WorkAreaTop

alle anderen Forms passt du dann so an

Code:
    Form.Left = Screen.ActiveForm.Left * XFaktor
    Form.Top = Screen.ActiveForm.Top * YFaktor
    Form.Width = Screen.ActiveForm.Width * XFaktor
    Form.Height = Screen.ActiveForm.Height * YFaktor

Dann durchläufst du alle Controls in der aktiven Form in einer For Each Schleife.
Du musst aber mit TypeOf prüfen was es für ein Control ist, denn eine Line hat beispielsweise die x1,x2,y1,y2 Eigenschaften und nicht Left, Top usw. wie z.B. Textboxen.
Einige Controls können z.B. gar nicht angepasst werden wie z.B. das Sysinfo, aber es ist
ja auch nicht sichtbar. Diese müssen mit TypeOf ausgegrenzt werden.

Versuche mal dein Glück.

Gruß
Jens
 
Hallo,

kennt hier jemand ein Tutorial oder Buch wo dieses Thema schön erklärt wird? Ich bin ja mit meinem Programm echt zufrieden, aber eine Auto Size Funktion würde meinem Programm einen richtig Professionellentouch verleihen. Nur ist mir nicht wirklich klar wie die Sache anpacken soll, schon gar nicht in meinem Prog, da es schon relativ umfangreich ist.

Gruß

Christoph

Ps. Vielleicht schreibt der Jens mal ein Tutorial zu diesem Thema ^^
 
Hallo,

leider bekomme ich das über diesen Weg nicht hin, dafür bin ich noch zu frisch. Ich habe eine andere Idee, sie ist zwar sicherlich nicht sauber, aber ich könnte mir damit erst mal helfen(es lebe der Pfusch :p ).

Also, meine Idee:

Ich möchte einfach mein Programm doppelt installieren, einmal die vorhandene Version 1024*780 und eine in 1152*864. Ich würde die vorhandene Version einfach kopieren und dann auf 1152*864 zurechtrücken. Klar ist das nicht elegant und in der Zukunft werde ich sicher bald wieder vor dem selben Problem stehen, aber momentan ist das scheinbar die einzige Lösung die ich realisieren kann. Das Ganze soll dann so ablaufen wenn das Programm gestartet wird:

If Bildschirmauflösung 1024*780 Then Load Form1024*780

If Bildschirmauflösung 1152*864 Then Load Form1152*864

Else
MsgBox Ihre Bildschirmauflösung ist für diese Programm nicht Optimal!

Load Form1024*780

End If

Könnte mir jemand behilflich sein das zu Programmieren? Ich habe es schon mit den Anregungen vom Ingo versucht, aber leider nicht hinbekommen. Ich bin halt noch ein ganz Kleiner :)

Gruß

Christoph
 
Zurück