プログラム実行時にFormを任意の場所から表示させたいのですが、例えば、左下隅にFormを表示させる時は、ディスプレイのwidth(幅)とheight(高さ)を取得しなければならないと思いますが、ディスプレイのwidthとheightはどうやって取得するのでしょうか?
TScreenでヘルプを引いて見てください
調べたら普通に解決しました。
ディスプレイのwidth = screen.width, height = screen.height;ですね^^;
そこは、分ったのですが、MSNメッセンジャーで、誰かからメッセージを受信すると、右下からwindowがニョキニョキと出てきますよね?メッセンジャーじゃないですけど、それを、form1のボタンを押したときに出現させたいのですが、form2をそのwindowに見立てて、timerを使ってやってみたのですが、どうもうまくいきません・・。
どのようにすればうまく出来るのか、ご教授お願いします。
えっと、、、「ニョキニョキ」と出すことが大切ですか?
無理矢理ですけど、、、
こんなので、、、ニョキニョキと、、、、
---------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
Form2.Top := Screen.WorkAreaHeight;
Form2.Left := Screen.Width - Form2.Width;
Form2.Show;
for i := Form2.Top downto (Form2.Top - Form2.Height) do
begin
Form2.Top := Form2.Top - 1;
Application.ProcessMessages;
Sleep(10);
end;
end;
---------------------------------------------------------------------
どうでしょ。。。ニョキニョkと、、、
動かしてみてください。
procedure TForm1.FormShow(Sender: TObject);
begin
Form1.Left := Screen.Width - Form1.Width;
Form1.Top := Screen.Height - Form1.Height;
AnimateWindow((Sender as TForm1).WindowHandle,1000,
AW_SLIDE + AW_VER_NEGATIVE + AW_HOR_NEGATIVE);
Sleep(5000);
AnimateWindow((Sender as TForm1).WindowHandle,1000,
AW_HIDE + AW_BLEND);
end;
http://www2.big.or.jp/~osamu/Delphi/browse.cgi?index=78352
返答ありがとうございます。
実はニョキニョキと出てきて、またニョキニョキと下がっていって、最後にはフォームが消えるというのがしたいんです。
実際、ニョキニョキと出すところまでは私自身も作れたのですが、ニョキニョキと下がって行くのが出来ません。(上がると下がるの組み合わせができません。)つまり、上がって下がって消えるのです。
フォームの出現はshowメソッドで、消すのはdestroyで良いのでしょうか?
手間をかけてしまって申し訳ないですが、よろしくお願いします。
OnCloseでいいと思います。
Fusaさんが提示された AnimateWindow で実現できますが、
MSDNでは dwFlags に AW_HIDE と AW_BLEND を同時にセットしないように記述されています。
下記のような組合せだと期待したような動作をします。
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
AnimateWindow(Handle, 1000, AW_HIDE or AW_SLIDE or AW_VER_POSITIVE);
end;
一度 AnimateWindow を調べられてみてはどうでしょうか?
ツイート | ![]() |