Borland Developer Studio 2006の新しいコンポーネントTTrayIcon

By: Hitoshi Fujii

Abstract: 新たに搭載されたTTrayIconについて、必要な情報を説明します。

    Borland Developer Studio 2006の新しいコンポーネントTTrayIcon

Windows 95の時代に、私がはじめてトレイアイコンに出会ったとき、なかなかかっこいいなと思った以外、それほど有効だとは思いませんでした。どれぐらいのアプリケーションが、実際このコンセプトを効果的に活用したでしょうか?でも、数年後、相当な数のアプリケーションがこれを活用するようになりました。そして今、私のコンピュータのトレイには8個以上のアイコンがありますし、多くのケースではもっとたくさんあります。

ここ数年、さまざまなソースから広まっている、いくつものトレイアイコンコンポーネントがありましたが、Borland Developer Studio 2006のリリースにより、ボーランドは、独自のTTrayIconを搭載するようになりました。基本的な操作は単純なので、すぐに利用して実行することができます。

    はじめに

TTrayIconは、ツールパレットの[Additional]セクションにあります。コンポーネントをフォームに配置し、VisibleプロパティをTrueに設定してください。あとはアプリケーションを実行させれば、その結果を見ることができます。おめでとうございます。これで報酬がもらえるでしょう。

まあこれは冗談で、もちろん本当はトレイアイコンがかっこよく見えるだけでなく、これにもう少し何かをさせるようにちょっと努力しなければなりません。実際のトレイアイコンのデモは、サンプルプロジェクトを見てください。

    いないいないばあ

トレイアイコンの標準的な機能により、ユーザーはアプリケーションを隠したり元に戻したりできるようになっています。これは、アプリケーションを、じゃまにならずにすぐに使えるように手元に置いておく、すばらしい方法です。

アプリケーションを隠すには、表示されているアプリケーションフォームのHideメソッドを使用するだけです。これで、自動的にアプリケーションアイコンは、タスクバーから消えるのと同じようにWindowsタスクスイッチャーから削除されます。Application.Minimizeも、同様に呼び出すことができますが、この場合、システムトレイではなくタスクバーにフォームの最小化アニメーションが表示される結果になることに注意してください。

複数フォームがある場合、一番上に表示されているフォームから一番下に表示されているフォームの順序で隠し、逆順で元に戻すことが重要です。これにより、アプリケーションを元に戻すときに、そのZオーダーが保持されることを確実にします。これは、モーダルダイアログボックスを使用しているときには重要です。フォームのZオーダーを確実する単純な方法は、アプリケーションを隠すときに、Screen.Forms配列を使って要素0からインクリメントして操作し、元に戻すときに、最大値要素からデクリメントして操作することです。すべてのフォームを隠す処理の例を、以下に示します。

  var
    k: integer;
  begin
    application.Minimize;
    for k := 0 to Screen.FormCount - 1 do begin
      Screen.Forms[k].Hide;
    end;
  end;

アプリケーションを復元するには、トレイアイコンのOnClickイベントハンドラに以下のコードを追加します。

  var
    k: integer;
  begin
    for k := Screen.FormCount - 1 downto 0 do begin
      Screen.Forms[k].Show;
    end;
    application.Restore;
    application.BringToFront;
  end;

サンプルプロジェクトでは、アプリケーションを隠すためにボタンを使いました。しかし、TApplicationEventsコンポーネントのOnMinimizeイベントに応答してアプリケーションを隠すのは、より自然な動作です。いくつかのアプリケーションでは、アプリケーションを元に戻すのに、シングルクリックではなくダブルクリックを要求します。しかし、16ピクセルたらずの四角形の中でダブルクリックするのは、だれにでもできるというわけではない器用さが要求されます。実際、アプリケーションを復元するもうひとつの方法として、グローバルホットキーの使用を検討するかもしれません。このときには、他のアプリケーションと衝突した場合のことを考慮して、ショートカットをカスタマイズできるようにしなえればなりません。

    今日のメニューは何ですか?

トレイアイコンにメニューを追加することは、アプリケーションを隠して復元する操作よりずっと簡単です。TPopupMenuコンポーネントをフォームに追加して、トレイアイコンのPopupMenuプロパティに指定します。関連するメニュー項目を追加し、メニューを実行するイベントハンドラを追加してください。モーダル子フォームが表示された状態でアプリケーションを閉じようとしたときに、問題が発生するのではないかと心配していました。しかし、これは、うまく解決するようです。

Borland Developer Studio 2006 Update 1では、TTrayIconは、関連するコンポーネントが削除されたときに、PopupMenuプロパティが正しくnil に設定されませんでした。一般保護違反と他の不具合を避けるために、TpopupMenuコンポーネントを削除する前に、PopupMenuプロパティをクリアしておいてください。

    お好きな画像をどうぞ

デフォルトで、トレイアイコンは、アプリケーションアイコンを使用しますが、Iconプロパティにアイコンをロードするか、TImageListのインスタンスをIconsプロパティに設定してIconIndexプロパティに適当な値を設定するかのいずれかの方法で、オーバーライドすることができます。

もし、ImageListを使用しているときには、AnimateプロパティをTrueに設定することで、アイコンのアニメーションが可能になります。アイコンは、イメージリストの順番で次々に表示されます。次のアイコンに変わる速度は、AnimateIntervalプロパティで指定します。

    ヒント

ヒントの表示は簡単です。テキストをHintプロパティに設定すれば、トレイアイコン上にマウスカーソルを停止させると表示されます。もしHintプロパティが空の場合には、[プロジェクト|オプション|アプリケーション]で設定する、アプリケーションタイトルが表示されます。Windowsは、ヒント文字列の長さを127文字に制限します。もし、Hintプロパティに何らかのテキストを設定し、その後、ブランク文字列を設定すると、Windowsがまだ古いテキストを表示することが分かります。これは、Delphiの問題ではなく、Windowsによる問題のように思えます。

    99 Red Balloons ♪

失礼、表示させるのはイエローバルーンです。バルーンヒントは、重要ではないイベントに対してユーザーにアラートを入れるのに最もよく用いられます。複数のアプリケーションがバルーンヒントを表示できますが、Windowsは、これらを確実にひとつずつ最小の時間間隔で表示します。

一度バルーンヒントが表示されると、ユーザーはクリックしてこれを消すことができます。もしユーザーがクリックしなでいると、ユーザーはシステムに対してアクティブであると推測され、バルーンヒントは一定時間でタイムアウトすると自動的に消えていきます。もしコンピュータがアイドル状態のときは、ユーザーが再びコンピュータを使用開始するまで、バルーンヒントは表示され続けます。タイムアウトはアプリケーションで設定できますが、Windowsは、最小値と最大値の間(標準的には10~30秒の間)に強制します。

もし、複数のアプリケーションがバルーンヒントを表示しようとすると、Windowsは、2秒の間隔をおいて次のバルーンヒントを表示します。もし、ひとつのアプリケーションが2つのバルーンヒントを連続して表示しようとすると、最初のヒントはすぐに2つ目のヒントに置き換えられてしまいます。

もちろん、ユーザーが、レジストリでEnableBalloonTipsの値を0に設定して、バルーンヒントの表示を無効にしていると、バルーンヒントは表示されません。

HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerAdvanced

これらの点を考慮して、バルーンヒントを表示してみましょう。関係するプロパティは、BalloonFlags、BalloonHint、BalloonTimeout、BalloonTitleです。

BalloonFlagsは、メッセージボックス内に、「エラー」、「情報」、「警告」といった一般的なアイコンを表示します。BalloonHintには、バルーンヒントに表示されるテキストを指定し、BalloonTitleには、バルーンヒントのキャプションを指定します。BalloonHintには、255文字の制限があり、BalloonTitleには63文字の制限があります。BalloonTimeoutは、バルーンヒントを自動的に消去するまでの時間(ミリ秒)を設定します。すでに述べたように、許容範囲は通常10~30秒です。バルーンヒントを実際に表示するには、ShowBalloonHintプロシージャを呼び出してください。

もし、タイムアウトする前にバルーンヒントを手動で隠したい場合には、BalloonHintに空の文字列を指定してShowBalloonHintを呼び出します。

バルーンヒントの表示は、システムによって異なるようです。例えば、デモプログラムをWindows 2000で実行すると、次のようにバルーンヒントが表示されます。

Hide image

Windows 2003の場合は次のようになります。

Hide image

    まとめ

トレイアイコンは、すばらしいツールです。しかしこれに夢中にならないように。常に、ユーザーにトレイアイコンを無効にするオプションを提供するようにしてください。特に、バルーンヒントについては。

実際のTTrayIconのデモについては、こちらのサンプルプロジェクトを参照してください。


Server Response from: ETNASC01