ディスプレイのwidth、heightを取得したいのですが。


night  2005-03-03 07:11:27  No: 13507

プログラム実行時にFormを任意の場所から表示させたいのですが、例えば、左下隅にFormを表示させる時は、ディスプレイのwidth(幅)とheight(高さ)を取得しなければならないと思いますが、ディスプレイのwidthとheightはどうやって取得するのでしょうか?


とーりすがり  2005-03-03 08:46:47  No: 13508

TScreenでヘルプを引いて見てください


night  2005-03-03 08:57:12  No: 13509

調べたら普通に解決しました。
ディスプレイのwidth = screen.width, height = screen.height;ですね^^;

そこは、分ったのですが、MSNメッセンジャーで、誰かからメッセージを受信すると、右下からwindowがニョキニョキと出てきますよね?メッセンジャーじゃないですけど、それを、form1のボタンを押したときに出現させたいのですが、form2をそのwindowに見立てて、timerを使ってやってみたのですが、どうもうまくいきません・・。
どのようにすればうまく出来るのか、ご教授お願いします。


とーりすがり  2005-03-03 09:13:10  No: 13510

えっと、、、「ニョキニョキ」と出すことが大切ですか?


とーりすがり  2005-03-03 09:21:35  No: 13511

無理矢理ですけど、、、
こんなので、、、ニョキニョキと、、、、

---------------------------------------------------------------

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と、、、


Fusa  2005-03-03 11:00:14  No: 13512

動かしてみてください。

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


night  2005-03-03 22:59:25  No: 13513

返答ありがとうございます。
実はニョキニョキと出てきて、またニョキニョキと下がっていって、最後にはフォームが消えるというのがしたいんです。
実際、ニョキニョキと出すところまでは私自身も作れたのですが、ニョキニョキと下がって行くのが出来ません。(上がると下がるの組み合わせができません。)つまり、上がって下がって消えるのです。
フォームの出現はshowメソッドで、消すのはdestroyで良いのでしょうか?
手間をかけてしまって申し訳ないですが、よろしくお願いします。


Basser  2005-03-05 02:45:37  No: 13514

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 を調べられてみてはどうでしょうか?


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

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






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