フォームとコントロールを動的にサイズ変更するときの考慮事項

提供: RAD Studio
移動先: 案内検索

さまざまなホスト環境を考慮したプログラミング への移動


アプリケーションのフォームやビジュアル コントロールを動的にサイズ変更する場合は、サイズ変更処理のあらゆる側面を考慮して、どのような画面解像度でもアプリケーションが最適に表示されるようにしておく必要があります。アプリケーションのビジュアル要素を動的にサイズ変更する場合に考慮が必要な点を以下に挙げます。

  • フォームやビジュアル コントロールのサイズ変更は、開発用コンピュータとアプリケーションがインストールされたコンピュータの画面解像度を比較して計算された比率で実行します。定数を用いて、開発用コンピュータの画面解像度の 1 つの次元(高さまたは幅)をピクセル単位で指定します。TScreen.Height プロパティまたは TScreen.Width プロパティを用いて、実行時にユーザーのコンピュータの同じ次元のサイズを取得します。開発用コンピュータの値をユーザーのコンピュータの値で除算して、2 台のコンピュータの画面解像度の差分比率を算出します。
  • アプリケーションのビジュアル要素(フォームやコントロール)は、要素のサイズとフォーム上での位置を増減してサイズ変更します。このサイズ変更は、開発用コンピュータとユーザー コンピュータの画面解像度の違いから計算した比率で行われます。フォーム上でのビジュアル コントロールのサイズと位置の変更は、フォームの Scaled プロパティ CustomForm.ScaledTrue に設定し、その ScaleBy メソッド TWinControl.ScaleBy を呼び出すことで、自動的に行われます。ただし、ScaleBy メソッドでは、フォームの高さと幅は変更されません。これは、Height プロパティと Width プロパティの現在の値に画面解像度の差分比率を掛けて、手動で変更する必要があります。
  • フォーム上のコントロールのサイズ変更は、TWinControl.ScaleBy メソッドを使って自動的に行うのではなく、ループ処理で各ビジュアル コントロールを参照し、そのサイズと位置を設定して手動で行うことができます。ビジュアル コントロールの Height プロパティおよび Width プロパティの値に画面解像度の差分比率を掛けます。また、ビジュアル コントロールの Top プロパティおよび Left プロパティの値に同じ比率を掛けて、画面解像度に比例した位置に配置します。
  • ユーザーのコンピュータよりも高い画面解像度に構成されたコンピュータ上でアプリケーションを設計した場合は、ビジュアル コントロールのサイズ変更時にフォント サイズも縮小されます。設計時のフォント サイズが小さすぎると、実行時にサイズ変更したフォントが読めなくなる場合があります。たとえば、フォームのデフォルト フォント サイズは 8 です。開発用コンピュータの画面解像度が 1024x768 で、ユーザーのコンピュータが 640x480 の場合、ビジュアル コントロールのサイズは係数 0.625(640 / 1024 = 0.625)を掛けて縮小されます。元のフォント サイズ 8 は 5(8 * 0.625 = 5)になります。アプリケーション内のテキストはフォント サイズが小さく表示され、つぶれて読めなくなります。
  • TLabelTEdit などの一部のビジュアル コントロールは、コントロールのフォントのサイズが変化すると、動的にサイズ変更されます。これは、配置されたアプリケーションのフォームやコントロールが動的にサイズ変更される場合に影響します。画面解像度に比例したサイズ変更に加えて、フォント サイズの変更によってもコントロールのサイズが変更されるからです。この影響は、コントロールの AutoSize プロパティを False に設定することで補正できます。
  • キャンバスに直接描画するときのように、ピクセル座標を明示することは避けます。その代わりに、開発用コンピュータとユーザー コンピュータの画面解像度の差分比率に比例して座標を変更します。たとえば、アプリケーションでキャンバスに高さ 10 ピクセル、幅 20 ピクセルの長方形を描画する場合、10 と 20 に画面解像度の差分比率を掛けます。そうすることで、画面解像度が違っても視覚的には同じサイズで長方形が表示されます。

関連項目

コード例