• ベストアンサー

Accessについて質問です。

Accessについて質問です。 オープン時にフォームを最大化させているのですが、 その中に設置したボタン等のコントロールを真ん中に表示させたいと考えています。 しかし、複数台で使用する為、パソコンの解像度がまちまちで、表示位置もまちまちになってしまいます。 どのパソコンでもだいたい同じ様に表示させたいのですが、その様な事は可能でしょうか? アドバイスよろしくお願いいたします。m(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
  • iryuza
  • ベストアンサー率57% (16/28)
回答No.3

今回、ボタンが7個縦に並ぶと言う事なので、 ◯ボタン間隔を均等に割り付けるとした場合、まず各ボタンの間隔を算出します。 算出方法は、 画面縦方向の空白空間 = フォームの高さ ー 7個のボタン合計の高さ 最上段・最下段空間も均等割の場合、 7個のボタンの上下空間は合計8個になりますので、各ボタン間隔 = 画面縦方向の空白空間 / 8となります。 よって、ボタン位置 = 各ボタンの下面の位置 + 各ボタン間隔 でボタンの高さを決めることができます。 プログラムで書くと次のようになります。 'ボタン間隔に使える領域の算出 Dim interval As Integer interval = (Form.Height - button.heightの合計) / 8 '各ボタンの高さ位置を設定 Button1.Top = interval Button2.Top = interval + Button1.Top + Button1.Height Button3.Top = interval + Button2.Top + Button2.Height という具合に、7回繰り返します。 ◯次は、ボタン間隔を一定にして中央に配置するやり方です。 1.ボタンをパネル内に配置して、パネルの配置を変更する方法 2.ボタン間隔は固定で、上下空間の空き具合だけを変える方法があります。 1.は、パネル自体を動かすのでPanel.Topの値を算出すれば良いだけです。 2.の場合は、上記の要領で上下空き空間を計算します。 空き空間 = (フォームの高さ ー (ボタンの高さ合計 + ボタン間の高さの合計))/ 2で求められます。 あとは、各ボタンの高さ位置を演算して求めればよいです。(式は、均等割を参考にしてください。) 今回も理論値なので、実証してません。 頑張って作成してください。

abuhiro
質問者

お礼

いつも大変お世話になっております。m(_ _)m まさしく思っていた通りの事が出来ました。 誠に感謝です。 これからもよろしくお願いいたします。

その他の回答 (2)

  • iryuza
  • ベストアンサー率57% (16/28)
回答No.2

一部 間違えました。 Button.Height = (Form.Height - Button.Height)/2 × Button.TOP = (Form.Height - Button.Height)/2 ○

  • iryuza
  • ベストアンサー率57% (16/28)
回答No.1

手元にVBAが無いので確認できないのですが、Form_Loadイベント開始時にFormのサイズを取得して、ボタンの位置を変えれば良いと思います。 Button.Left = (Form.Width - Button.Width)/2 Button.Height = (Form.Height - Button.Height)/2 これで、ほぼ中央にくると思います。 VBAにClientSizeプロパティが有ったかな? あれば、より正確に中央に移動できます。

abuhiro
質問者

お礼

非常にためになる回答ありがとうございます。 なるほど~と思いました。 幅に対するボタン位置は回答いただいたソースを使わせていただきます。m(_ _)m ただ、縦位置が問題で、ボタン数が縦に7個並びます。 非常に中途半端な数で申し訳ないのですが、もしよろしければアドバイスよろしくお願いいたします。

関連するQ&A