delphi.gif (306 バイト) 丸いウィンドウを作るには


アナログ時計などを作るときなどのように、丸いウィンドウが必要になることがあります。一般にリージョン(Region)を使うと、長方形以外のウィンドウを作ることができます。
Delphiでは、リージョンを扱うコンポーネントは用意されていないので、Win32 APIを直接使うことになります。丸いウィンドウの場合、CreateEllipticRgnとSetWindowRgnを使います。丸いウィンドウの元となるフォームは、オブジェクトインスペクタで、BorderStyleをbsNoneにしてタイトルバーを削除しておきます。また、バックとなるビットマップなどをImageコンポーネントを使って貼り付けておくとよいでしょう。次の例は、OnShowイベントで丸いウィンドウを作るコードです。

delphi1.gif (322 バイト) 

procedure TForm2.FormShow(Sender: TObject);
var
    hRgn: Integer;
begin
    hRgn := CreateEllipticRgn(0, 0, 100, 100);
   SetWindowRgn(Handle, hRgn, True);
end;