フォームを左下端に表示したいのですが。

解決


シロウ斗  2009-08-14 18:40:08  No: 35420  IP: 192.*.*.*

起動時、フォームを左下に表示したいのですが、

Form1.Left := 0;
と、するとして、

Form1.Top := Screen.Height - Form1.Height;

では、フォームの下のほうがタスクバーの裏に隠れて見えなくなってしまいます。
タスクバーの高さがわかれば、
Form1.Top := Screen.Height - Form1.Height-(タスクバーの高さ);

とできると思うのですが。

このようなときはどうすればいいんでしょうか?

編集 削除
tor  2009-08-14 19:19:04  No: 35421  IP: 192.*.*.*

タスクバーは必ずしも下にあるとは限らないですし
タスクバー以外のツールバーをユーザが追加することもできますよね。
で、これらのバーに隠されない領域をワークエリアと呼びます。
ScreenオブジェクトにあるWorkAreaRectなどのプロパティを使うと
ワークエリアの領域を求められます。

編集 削除
シロウ斗  2009-08-14 19:49:18  No: 35422  IP: 192.*.*.*

古いDelphi(バージョン5)でやってみてるのですが、Screen. としてもWorkAreaRectプロパティが出てくれません。

ヘルプを見てもTScreenにWorkAreaRectは載っていません。
多分、素人だから見るべきところが違うのかもしれませんが、どうやって取得すればよいでしょうか?

編集 削除
Fusa  2009-08-14 20:42:01  No: 35423  IP: 192.*.*.*

そういうときこそ、うちのライブラリを使って頂きましょう。

どうぞ。

http://delfusa.main.jp/delfusafloor/opensource/delfusalibrary/20070828160200/TaskbarUnit/TaskbarUnit.pas.txt

その手の大抵のものは揃っているので
探してみてね。

編集 削除
ないものはない  2009-08-14 21:06:49  No: 35424  IP: 192.*.*.*

D5ではまだそのプロパティはないみたいだけど、
そんなときはAPIかな。
SystemParametersInfo(SPI_GETWORKAREA, 0, @WorkAreaRect, 0);

編集 削除
Fusa  URL  2009-08-14 23:12:49  No: 35425  IP: 192.*.*.*

ああ、こっちの方がよかったですか。

unit FormPosition;
http://delfusa.main.jp/delfusafloor/opensource/delfusalibrary/20070828160200/FormPosition/Backup/2006-12-20FormPosition.pas

このなかの、
function NoneTaskBarDesktopRect: TRect;

編集 削除
シロウ斗  2009-08-15 04:05:49  No: 35426  IP: 192.*.*.*

みなさま、回答のほう、ありがとうございます。

APIのが軽くできたので、今回はこれでいこうと思います。

せっかくですので、Fusaさんのライブラリをダウンさせていただき、勉強に使おうと思います。

ありがとうございます。多謝。

編集 削除