-2

私はデルファイを使用しています

私は複数のショップで実行するプログラムを持っていますが、低解像度の画面を使用している人もいれば、高解像度の画面を使用している人もいます。

解像度の低い画面でプログラムを実行すると、コンポーネントがより右側に表示され、スクロール バーが表示されます。解像度に関係なく、コンポーネントがフォームのちょうど真ん中に表示されるようにします。どうやって?

4

3 に答える 3

7

最大化されたフォームについて話しているのでない限り、画面の解像度は問題にならないので、それを想定します。これは、変更されたフォーム サイズの中心にコンポーネントを配置するのに問題があることを意味します。

その点で 1 つのコントロールを考えると、解決策は比較的簡単です。OnResizeイベント ハンドラーでその位置を変更します。

procedure TForm1.FormResize(Sender: TObject);
begin
  Control.Left := (ClientWidth - Control.Width) div 2;
  Control.Top := (ClientHeight - Control.Height) div 2;
end;

複数のコントロールの場合、最も簡単な解決策は、それらを単一のコンテナー (パネルなど) に配置し、上記の方法を使用することです。ただし、フォームが小さい場合、コンテナーが大きくなりすぎて、フォームのスクロール バーが表示されてしまう可能性があり (フォームのAutoScrollプロパティによって抑制される可能性があります)、フォーム サイズが大きい場合、コンテナーが小さすぎるようにレンダリングされる可能性があります。

もう 1 つの解決策は、相対アンカー ソリューションAnchorsです。プロパティを[]すべてのコントロールに対して に設定するだけで、フォーム サイズに関係なく、すべてのコントロールが相対的な位置にとどまります。(このトリックは解決策 1 にも適用されます)。

どちらの場合も、コントロールのサイズとフォント サイズは同じままで、レイアウトが歪む可能性があります。それには複数の可能な解決策がありますが、それはあなたの質問とこの回答の範囲を超えていると思います。

于 2013-08-31T11:40:33.927 に答える