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

解決


TS  2009-09-29 08:26:19  No: 35766

カスタムコンポーネントのアイコンが変わらない
https://www.petitmonte.com/bbs/answers?question_id=6444
上記の続きみたいですが、コンポーネントのアイコンが
標準の○△□みたいなアイコンになって変わりません。

D7ではアイコンが表示できていました、同じ物をインス
トールした場合の話です。

色々やってみましたが分かりません、dclusr140.bpl名で
コンパイル、インストール等色々やりましたが、駄目です。
  アイコン以外のインストールは上手く行きます。

結局dclusr.resに直接ビットマップをXN Resource Editorを
使って登録した後コンパイル、インストールを行うと
アイコンが表示されたのですが(テストしたのは2つだけです)
こんな事を一々やるのは困ります、どなたか同様の状態に
なって解決された方はおられませんでしょうか。


DEKO  2009-09-30 10:48:57  No: 35767

こんにちは。

1.パッケージを開く。
2.プロジェクトマネージャで右クリック->アンインストール。
3.念のために、アイコンが変化しないユニットを開き、無意味な改行を入力するなりしてユニットを保存。
4.念のために、コンポーネントのユニット名と同じ *.dcu を削除。
5.プロジェクトマネージャで右クリック->クリーンアップ
6.プロジェクトマネージャで右クリック->ビルド
7.プロジェクトマネージャで右クリック->インストール

で、どうでしょうか?

これでも駄目なら、Mr.XRAY 氏がリンク先で書かれている方法で、
*.DCR を再生成した後に、上記手順をもう一度試してみて下さい。


DEKO  2009-09-30 10:54:24  No: 35768

>1.パッケージを開く。
事前に、パッケージ名.dproj を削除し、パッケージ名.dpk を開いてください。
(パッケージ名.dproj は勝手に再生成されます)


DEKO  2009-09-30 11:45:03  No: 35769

それでもダメなら、
Delphi のコマンドラインオプションに -nocache を渡して起動するとか。


TS  2009-09-30 17:52:16  No: 35770

DEKOさん、回答ありがとうございます。
DEKOさんのホームページの記事でお世話になっております。

ざっとやってみたのですが、登録されません。
今晩又じっくりやってみます。
コマンドは現在
-pDelphiのようですが
-pDelphi -nocacheでいいのでしょうか。


DEKO  2009-09-30 22:36:49  No: 35771

> -pDelphi -nocacheでいいのでしょうか。
はい。
これを行うとツールパレットのアイコンが
キャッシュから取得されなくなるようです。

アイコンが正しく登録されていても、ツールパレットの
アイコンキャッシュが更新されないという問題が QC に入っています。

Report No: 46883            Status: Reported
Package and Tool Palette Registry Entries Not Updated
http://qc.codegear.com/wc/qcmain.aspx?d=46883
QCWIN:Defect_No=46883

私もなんだかんだやっていたらこの現象に遭遇しましたが、
-nocache でアイコンを表示させる事ができました。

"アイコンキャッシュが更新されない事がある" ため、
レジストリからアイコンキャッシュを削除すると症状を悪化させる事になります。
ご注意下さい。


TS  2009-10-01 04:26:43  No: 35772

DEKOさん、何をやっても駄目でした。

最後の手段でプログラム自体を再インストールしても、
再インストール前と変わらない環境でインストールされまして、
症状変わらず。

いよいよ最後の手段でアンインストール後レジストリの
HKEY_CURRENT_USER\Software\CodeGear\BDS\7.0\の
7.0の部分を70.0に変更

再インストールした所初期のインストール後の画面になったのですが、
既設のコンポーネントのアイコンまで、例の標準のアイコンに
半分位がなってしましたした。

かなり情けない状態です。

>"アイコンキャッシュが更新されない事がある" ため、
>レジストリからアイコンキャッシュを削除すると症状を悪化させる事になり
>ます。
>ご注意下さい。

DEKOさんご指摘の状態です。

仕方がないのでレジストリを元に戻して現在振り出しに戻ったところです。

上記記載レジストリの続き\7.0\Palette\Cache\dcluser140.bpl内の
 classes.TPersistent.TSPIs
とかに一度でもコンポーネントのアイコンが表示されたものは
Icon16
Icon24
ICon32
とかのデータが有ります、しかしこれを使用して無い様です。

取りあえず、お手上げ状態です、又何かやれる事がありましたら、
教えて下さい。


DEKO  2009-10-01 07:22:54  No: 35773

1.[ファイル | 新規作成 | VCL フォームアプリケーション]
2.[表示 | ツールパレット]
  (フォームを表示した状態で)
3.右クリック -> プロパティ
4.表示->ボタンの大きさ
  "小(S)" にチェックを入れて OK ボタンを押下。
5."中(M)"/"大(L)"も 3.から繰り返し
6.Delphi を再起動

これで、レジストリにアイコンキャッシュが溜められるような気がします。


TS  2009-10-01 09:02:24  No: 35774

DEKOさんご指摘の新しい方法で
Icon16
Icon24
ICon32
のデータのあった物は表示されました。

ありがとうございます。

レジストリを手動で消せば新たらしくなるかと思って
消した物についても
 classes.TPersistent.T***
とか作成されるようです。
しかし上記のアイコンデータが無い物の作成までは出来ませんでした。

前にやった方法でもう一度やってみたいと思います。


DEKO  2009-10-01 09:26:48  No: 35775

ちょっとまとめてみました。
http://homepage1.nifty.com/ht_deko/tech041.html#tech078


TS  2009-10-02 03:23:25  No: 35776

DEKO さん分かりやすい説明ありがとうございます。

もう一度色々やってみましたが、普通には登録できません。
パスを通して、アイコンも更新してと書かれてある事を
やったつもりですが、駄目でした。
bplファイルにアイコンデータが登録されません。

bplファイルにリソースエディタを使ってアイコン登録後
>5."中(M)"/"大(L)"も 3.から繰り返し
をするとレジストリの\7.0\Palette\Cache\dcluser140.bpl
にアイコンデータが登録される様です。

結局plFileDialogを例にすると
plFileDialogReg.pas内の

implementation
uses plFileDialog;
{$RESOURCE plFileDialogReg.res} //追加

と言う様に直接コードを書くと
bplファイルにアイコンデータが登録されます。
しかし登録時すぐには使用されず再度登録
この時点でレジストリに登録される。

そこでもう一度登録(インストールの事)をすると
今度は表示されます。

解決ではないですが、私の環境がおかしくなっていると
言う事で、一応終了します。

何か情報がありましたら、又よろしくお願いします。

DEKOさんの情報で前に進めました、感謝します。


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

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






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