[delphi/2007/December]

【Delphi 2006】TTrayIconのアイコンが切り替わらないバグ(?) / 2007-12-12 (水)

 以前,エラそうに記事にした「プロジェクトウィアード」は結局,作者本人がなんとか実用出来るようになったところで妥協して開発停止…だったのですが,開発環境をTurbo Delphi Explorer (※無料版Delphi 2006)に移行したのでそれにあわせて修正しています.

 その過程で気が付いたのですがDelphi 2006にはアイコントレイに常駐するためのコンポが標準で用意されているのですね.バルーンの表示も出来るようですし折角なのでこれを使うようにしてみました.

☆          ☆

 さて本題.TrayIconコンポ(ネットで配布されているコンポとは名前は同じですが別物です)にはイメージリストコンポと接続してトレイアイコンに表示するイメージを切り替える機能があります.

    Iconsプロパティ
    トレイアイコンに表示する各イメージを格納しているイメージリストコンポを指定
    IconIndexプロパティ
    参照しているイメージリストのどの番号の絵をアイコントレイに表示させるか(先頭が0です)

 実行中にアイコントレイに表示させるアイコンを切り替えるのが簡単にできて便利なのですが,どうも実行して一番最初にインデックス0を指定すると切り替わらないようです.そこで実行して一番最初の変更時には一度0以外のインデックスに切り替えてから0に切り替えるようにしました.実行したときに一度切り替えて戻してしまっても良いでしょう.ただしこのコンポはアイコンを切り替えるまではアプリケーションアイコンを表示しますのでイメージリストに格納しているイメージがいずれもアプリケーションアイテムと異なる場合はやはり実行して一番最初の変更時に切り替えて戻さなければならないでしょう.

☆          ☆

 「プロジェクトウィアード」は"weird"の名にふさわしくソフトのように似合わずますます怪しいソフトになってきました.しかし公開はまだ先になりそうです.

[ ツッコミの受付は終了しています ]
1: Dai@職場 (01/03 09:20)
あけおめです~。今日から、仕事初めです(凹)

(以前も書いたかと思いますが)Delphiは扱ったコトが無いのでアレなのですが、
API Shell_NotifyIconと同じ扱いなんスよね?
標準でついてるのは、便利ですね~。
(切り替わらないIndex0は、回避策があるみたいですし)
2: あほたり(管理人) (01/03 10:54)
あけましておめでとうございます。
三が日から仕事とはお疲れ様です
私は4日からですが日曜まで仕事です、おたがいがんばりましょ
ほとんどコードを書かずにできるのは便利です。
ただしXPだとログオン時に4秒でタイムアウトになる問題があるらしいのですが
これに対応していないので何とかしないといけないみたい。
3: あほたり(管理人) (01/03 10:55)
あけましておめでとうございます。
三が日から仕事とはお疲れ様です
私は4日からですが日曜まで仕事です(w。
ほとんどコードを書かずにできるのは便利です。
ただしXPだとログオン時に4秒でタイムアウトになる問題があるらしいのですが
これに対応していないので何とかしないといけないみたい。