2009-09-16 11 views
8

Delphi 7で書かれたいくつかのレガシーアプリケーションがあります。これらのアプリケーションではカスタムデスクトップdpi設定をサポートすることが何年か要求されていますが、われわれは知っている限り、さて、私たちはもうできません。Delphi 7アプリケーションのカスタムデスクトップDPI設定はどのようにサポートされますか?

ユーザーがデスクトップを120dpiと言うように設定すると、コントロールのいくつかがフォームの目に見える範囲を越えるアプリケーションやストレッチを落とします。具体的には、親の右端に固定されているものです。

開胸手術なしでこの問題を防ぐにはどうすればよいですか?

+0

VCLは、「開胸手術」なしでは、これを行うことはできません。私がこれまで見てきた最良の解決策は、 'Scaled'が' False'に設定されたフォームをInno Setupで使用していますが、実行時にフォームのカスタムスケーリング機能を採用しています。これにより、ISで作成されたセットアッププログラムは、より高いDPI設定でかなりよく見えます。 – mghie

答えて

1

おそらくご存知のように、これはwell known issue with Delphi forms and interactions with system font sizesです。

Delphiフォームのデフォルトの動作は、(ランタイム)ユーザーのデスクトップ環境に合わせて縮尺を変更することです。しかし、これは意図していない望ましくない副作用をもたらすことがあります。

しかし(デフォルトはTRUE)スケーリングプロパティは、これを防ぐためにFALSEに設定することができますが、私はあなたが最初の記事を読んで、そしてまた、これはあなたのケースで適切なソリューションであるかどうかを判断するために、the information in this articleを検討をお勧めします。

あなたが運が良ければ、すべてのフォームでScaledをFALSEに設定するだけで、良い方法が得られるかもしれません(面倒かもしれませんが、心臓手術ではありません)。

+0

ああ、あなたは私に数秒の拍手を送り、あなたの答えはより良い/より完全です。私は私の同様の答えを削除します。 :-) – robsoft

+3

-1は、単にScaledをFalseに設定することも考えています。これを行うことができますが、実行時のサイズ変更とすべてのコントロールの再配置を行うだけです。各フォームの適切なシステムフォント(実行時に決定)を設定した後であることが好ましい。スケーリングやランタイムのサイズ変更は、視覚障害や高DPI画面の人にとっては残酷ではありません。 – mghie

関連する問題