☆AnimateWindowを使う。
よくあるタスクトレイの上から「にゅーっ」と現れて、「にゅーっ」と消えていくフォームのサンプルです。
未だVISTAではなくXPがメインの私は、UIのデザインセンスもきっと古いんでしょうね(笑)
メインフォーム
サブフォーム(このフォームが現れたり、消えたりします。)
MSDN
AnimateWindow
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_animatewindow.asp
未だVISTAではなくXPがメインの私は、UIのデザインセンスもきっと古いんでしょうね(笑)
メインフォーム
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation uses Unit2; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Form2.Show; end; procedure TForm1.Button2Click(Sender: TObject); begin Form2.Close; end; end.
サブフォーム(このフォームが現れたり、消えたりします。)
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons; type TForm2 = class(TForm) procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure FormShow(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private 宣言 } procedure WMNCHitTest(var message: TWMNCHitTest); message WM_NCHitTest; public { Public 宣言 } end; var Form2: TForm2; implementation {$R *.dfm} uses ShellAPI; procedure TForm2.WMNCHitTest(var message: TWMNCHitTest); begin inherited; // キャプションバー上のマウス操作を無効にします。 // フォームを移動させないため if message.Result = HTCaption then message.Result := 0; end; procedure TForm2.FormCreate(Sender: TObject); begin BorderStyle := bsToolWindow; end; procedure TForm2.FormShow(Sender: TObject); function GetTaskBarPos: TRect; var apbData : TAPPBARDATA; begin apbData.cbSize := SizeOf(TAPPBARDATA); SHAppBarMessage(ABM_GETTASKBARPOS, apbData); with Result do begin Left := apbData.rc.Left; Right := apbData.rc.Right; Top := apbData.rc.Top; Bottom := apbData.rc.Bottom; end; end; var Rect: TRect; I: Integer; begin Rect := GetTaskBarPos; // タスクバーの高さ if (Rect.Top <> 0) then I := Rect.Bottom-Rect.Top else I := 0; // フォームの表示位置を設定します。 Left := Screen.Width - Width; Top := Screen.Height - Height -I; // ぼわーんと表示する場合 //AnimateWindow(WindowHandle, 1000, AW_ACTIVATE + AW_BLEND); // 下からにゅーと表示する場合 AnimateWindow(Handle,1000, AW_SLIDE + AW_VER_NEGATIVE); end; procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin // ぼわーんと終了させる場合 //AnimateWindow(WindowHandle,1000, AW_HIDE + AW_BLEND); // 下からにゅーと終了させる場合 AnimateWindow(Handle,1000, AW_HIDE + AW_SLIDE + AW_VER_POSITIVE); end; end.
MSDN
AnimateWindow
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_animatewindow.asp
| 固定リンク