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

解決


シロウ斗  2009-08-15 03:40:08  No: 35420

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

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

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

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

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

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


tor  2009-08-15 04:19:04  No: 35421

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


シロウ斗  2009-08-15 04:49:18  No: 35422

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

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


Fusa  2009-08-15 05:42:01  No: 35423

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

どうぞ。

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

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


ないものはない  2009-08-15 06:06:49  No: 35424

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


Fusa  URL  2009-08-15 08:12:49  No: 35425

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

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

このなかの、
function NoneTaskBarDesktopRect: TRect;


シロウ斗  2009-08-15 13:05:49  No: 35426

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

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

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加