2009-08-24 3 views
2

Ich habe eine Delphi 7-App, auf der WinXP-Entwicklungsmaschine ist die Formulargröße die gleiche wie sie entworfen wurde.Delphi-Apps, Formulargröße variiert auf verschiedenen Computern

Die App wurde jedoch auf einem Vista-Computer ausgeführt, einige Formulare wurden um 20-30% vergrößert, sodass am rechten und unteren Rand von Formularen große Leerzeichen bleiben.

Auf einem WinXP-Computer unseres Kunden sind die Formulare verkleinert, sodass Bildlaufleisten in den Formularen angezeigt werden.

Auf den meisten anderen Geräten wird OK angezeigt.

Die App merkt sich die Formulargröße, die zuletzt bei einigen Formularen verwendet wurde, und verwendet sie beim nächsten Öffnen des Formulars. Wenn diese Einstellungen jedoch auch entfernt werden, ist die Standardformulargröße immer noch anders als ursprünglich geplant.

Irgendwelche Ideen?

Antwort

11

Das klingt wie ein well known issue with Delphi forms and interactions with system font sizes.

Das Standardverhalten eines Delphi-Formulars versucht zu skalieren, um die Desktopumgebung des (Laufzeit-) Benutzers zu berücksichtigen. Dies kann jedoch unbeabsichtigte und unerwünschte Nebenwirkungen haben, und Ihre "Symptome" hören sich so an, als ob das in Ihrem Fall passiert.

Aber alles ist nicht verloren! Die Scaled Eigenschaft (TRUE standardmäßig) kann FALSE gesetzt werden, um dies zu verhindern, aber ich empfehle Ihnen, diesen ersten Artikel zu lesen und auch The information in this article zu betrachten, um festzustellen, ob dies die richtige Lösung in Ihrem Fall ist.

+0

Danke, das Problem war der Client Large Size im Display verwendet (120dpi vs normalen 96dpi) – Robo

1

Große Schriftarten im Vergleich zu kleinen Schriftarten auf der Vista-Maschine vielleicht?

0

Verwenden Sie diesen Code in OnCreate Ereignis für jeden Ihre Form:

wenn Win32Platform = VER_PLATFORM_WIN32_NT dann Font.Name: = 'MS Shell Dlg 2' sonst Font.Name: = 'MS Shell Dlg';