カスタムコンポーネントのアイコンが変わらない

解決


  2009-07-24 03:37:46  No: 35213

"Delphi6"の"イメージエディタ"無き後、"NX Resource Editor"を使用し
24x24ドット 8bitビットマップでカスタムコンポーネントのアイコンを
作成しようと思っております。
リソース名をクラス名、dcrファイル名をユニット名と同じにし、プロ
ジェクトに追加したのですがデフォルトのアイコンから変わりませんで
した。むか〜し作ったコンポーネントのdcrを同エディタで新規作成し
同様に追加した場合はきちんとアイコンが反映されたのですが、今回は
全く無反応。今日一日これでつぶれてしまいました。
クラス名やユニット名に何らかの制約があったり、カスタムコンポー
ネントソースに何か注意点等があるのでしょうか?

ちなみに作成したコンポーネントはTGraphicControl継承の絵描きコンポ
です。別に作成したTCustomDrawGrid継承のものもアウトでした。

皆様のお知恵を拝借下さいますようお願い致します。


Mr.XRAY  2009-07-24 06:08:00  No: 35214

Mr.XRAYです.
あまり頭が悪いとは自分では思っていないのですが,整理しないと理解できないので..
度々で申し訳ありませんが,手順を確認させていただきます.

1. 新規コンポーネントを作成し,あるプロジェクトに登録した.
    (または,まだ登録していない)
2. NX Resource Editorで24×24×8bitのアイコン(dcr?)を作成した.
3. 該当コンポーネントとそのdcrファイルをあるプロジェクトに追加した.
    (または,コンポーネントは既にそのプロジェクトに登録済みで,dcrだけを登録した?)
4. コンポーネントを再登録または,プロジェクトの再構築,またはコンパイルをした.
    (どの作業かは不明)
5. コンポーネントパレットのアイコンがデフォルトのままであった.
    (または,アイコンが変化しなかった)
    
>別に作成したTCustomDrawGrid継承のものもアウトでした。    

これは,残念ですが,どういう状況なのかは理解できませんでした.

1. 一度,そのコンポーネントをプロジェクトから登録削除する
2. そのプロジェクトを再構築する.または,コンパイル
3. 再度コンポーネントとdcrファイルを登録する

でもダメでしょうか.
ん? ちょっと待ってください.コンポーネントのアイコンって8bit使えましたっけ?
4bitだったような?
Delphi2007では使えるのかも知れませんが,未確認です.

コンポーネントのアイコンの作成には,以下のような方法もあります.

1. まず,コンポーネント用のビットマップを作成する
    複数の場合は,その数だけ.
    名前は,イメージエディタの時と同様に全て大文字とする

2. これらのファイルからrcファイルを作成する
    ファイル名は,登録コンポーネントのファイル名(pasの)と同じにする

3. このrcファイルをリソースコンパイラでコンパイルしてresファイルを作成する

4. 出来たresファイルの拡張子をdcrに変更する

これであれば,コンポーネントに添付しての配布も可能です.
一応,上記の一連の動作をするプログラムを作成はしているのですが,
Vistaでの動作用に修正していないので,UPしていません.
必要であれば,自力でやってみてください.

少なくても,Windows XP(SP3) + Delphi7 Pro
Windows XP(SP3) + Delphi2007-R2 pro  では動作確認しています.


  2009-07-24 19:56:53  No: 35215

Mr.XRAYさん

ご返信ありがとうございます。
ご確認の手順で合っています。また256色まで対応している
ので8bitで問題ありません。

別のPC(こちらはXP)でインストールしてみたところ
パレットに自作アイコンが表示されました。
メインの方でも一度最初からパッケージを作成して
インストールしてみます。確認後再連絡させて頂きます。


  2009-07-24 20:41:51  No: 35216

追記です。

日を改めてインストールしたところ普通にアイコンが表示されて
しまいました。何だったんでしょう(T T)

追加で確認ですが、BCBで同じコンポーネントを*.pasをベースに
インストールする際

Delphi用 : TMyComponentD (MyComponentD.pas)
BCB用    : TMyComponentR (MyComponentR.pas)

と作成したのですが、dcrをMyComponentR.dcrとしてもアイコンが
反映されませんでした。MyComponentR.cppをソースにすれば問題ない
のかなと思っていますがこの辺ご存じの方はいらっしゃらないでしょ
うか?


Mr.XRAY  2009-07-24 22:12:37  No: 35217

>日を改めてインストールしたところ普通にアイコンが表示されて
>しまいました。何だったんでしょう(T T)

詳しいことは分かりませんが,リソースなどは,再構築などがうまくいかないと,
反映されない場合があるようです.
私も,コンポーネントのアイコンを変更した時に,即,反映される場合と,そうでない場合が
あるので(次回起動時に反映されるとか),一度登録削除等で確認することがあります.

BCBの方はわかりません.


  2009-07-24 22:17:30  No: 35218

Mr.XRAYさん

>リソースなどは,再構築などがうまくいかないと,
>反映されない場合があるようです.

この件に限らず得てしてPCの再起動や開発環境の再起動等が解決法だったり
することがありますよね・・・

BCBの方も再度確認してみます。解決チェックしておきますが、BCBの方の
進展がありましたら書き込みさせて頂きます。

ありがとうございました。


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

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






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