起動時、フォームを左下に表示したいのですが、
Form1.Left := 0;
と、するとして、
Form1.Top := Screen.Height - Form1.Height;
では、フォームの下のほうがタスクバーの裏に隠れて見えなくなってしまいます。
タスクバーの高さがわかれば、
Form1.Top := Screen.Height - Form1.Height-(タスクバーの高さ);
とできると思うのですが。
このようなときはどうすればいいんでしょうか?
タスクバーは必ずしも下にあるとは限らないですし
タスクバー以外のツールバーをユーザが追加することもできますよね。
で、これらのバーに隠されない領域をワークエリアと呼びます。
ScreenオブジェクトにあるWorkAreaRectなどのプロパティを使うと
ワークエリアの領域を求められます。
古いDelphi(バージョン5)でやってみてるのですが、Screen. としてもWorkAreaRectプロパティが出てくれません。
ヘルプを見てもTScreenにWorkAreaRectは載っていません。
多分、素人だから見るべきところが違うのかもしれませんが、どうやって取得すればよいでしょうか?
そういうときこそ、うちのライブラリを使って頂きましょう。
どうぞ。
その手の大抵のものは揃っているので
探してみてね。
D5ではまだそのプロパティはないみたいだけど、
そんなときはAPIかな。
SystemParametersInfo(SPI_GETWORKAREA, 0, @WorkAreaRect, 0);
ああ、こっちの方がよかったですか。
unit FormPosition;
http://delfusa.main.jp/delfusafloor/opensource/delfusalibrary/20070828160200/FormPosition/Backup/2006-12-20FormPosition.pas
このなかの、
function NoneTaskBarDesktopRect: TRect;
みなさま、回答のほう、ありがとうございます。
APIのが軽くできたので、今回はこれでいこうと思います。
せっかくですので、Fusaさんのライブラリをダウンさせていただき、勉強に使おうと思います。
ありがとうございます。多謝。
ツイート | ![]() |