コンポーネントのアイコンは、コンポーネントリソースファイル (*.dcr) から抽出されます。最近の Delphi には "イメージエディタ (imagedit.exe)" が付属していないため、dcr の生成ができないかのように思えますが、実はできます。 コンポーネントのユニット名が MyComp.pas 、コンポーネントクラス名が TMyComponent だったとして話を進める事にします。
|
|
Delphi 2005 以降のガリレオ IDE ではコンポーネントアイコンに 256 色を使う事ができ、大きさも 16×16 / 24×24 / 32×32 を使う事ができます。
|
|
Delphi 10.2.2 Tokyo 以降のガリレオ IDE ではコンポーネントアイコンに PNG や 32bit Bitmap を使う事ができます。
|
|
旧アイコン / 新旧アイコンを作る際には、用意する元となる画像をあらかじめ 16 色に減色しておく事をオススメします。
IDE に登録したコンポーネントのアイコンが△□○になってしまう場合には? (2005 以降)
何かのはずみで、IDE に登録したコンポーネントのアイコンが "▲■●" になってしまう事があります。
"コンポーネント用アイコンの作り方 (2005 以降)" を参考に、アイコンファイルを再生成してみましょう。
アイコンリソースは
このように引き継がれますので、
パッケージを上記手順で再インストールしてみましょう。
コンポーネントが含まれるパッケージ(*.BPL)を 任意のリソースエディタで開いてみましょう (拡張子を "DLL" にリネームすると、大抵のリソースエディタで開けます)。アイコンファイルは存在しますか?
存在するのにアイコンが表示されない場合は、アイコンのキャッシュが更新されていない可能性があります。Delphi を -nocache オプション付きで起動するか、次項の方法でアイコンキャッシュを再生成してみましょう。
アイコンキャッシュの生成先は以下のレジストリエントリに格納されています。
バージョン | レジストリエントリ |
Delphi 2005 | [HKEY_CURRENT_USER\Software\Borland\BDS\3.0\Palette] |
BDS 2006 / Turbo Delphi 2006 | [HKEY_CURRENT_USER\Software\Borland\BDS\4.0\Palette] |
Delphi 2007 | [HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Palette] |
Delphi 2009 | [HKEY_CURRENT_USER\Software\CodeGear\BDS\6.0\Palette] |
Delphi 2010 | [HKEY_CURRENT_USER\Software\CodeGear\BDS\7.0\Palette] |
Delphi XE | [HKEY_CURRENT_USER\Software\Embarcadero\BDS\8.0\Palette] |
Delphi XE2 | [HKEY_CURRENT_USER\Software\Embarcadero\BDS\9.0\Palette] |
Delphi XE3 | [HKEY_CURRENT_USER\Software\Embarcadero\BDS\10.0\Palette] |
Delphi XE4 | [HKEY_CURRENT_USER\Software\Embarcadero\BDS\11.0\Palette] |
Delphi XE5 | [HKEY_CURRENT_USER\Software\Embarcadero\BDS\12.0\Palette] |
Delphi XE6 | [HKEY_CURRENT_USER\Software\Embarcadero\BDS\14.0\Palette] |
Delphi XE7 | [HKEY_CURRENT_USER\Software\Embarcadero\BDS\15.0\Palette] |
アイコンキャッシュを再生成する手順は以下の通りです。
アイコンは正しく表示されましたか?
Unicode な文字列リソースを含んだリソースファイルを作るには? (2009 以降)
えー?ResourceString で定数を定義しちゃいかんの?
リソースファイルを作るには リソースコンパイラ (BRCC32.EXE) を使い...たいところですが、"BRCC32.EXE は Unicode に対応していません"。ではどうするのかと言うと...
Delphi 2009 以降 に含まれるリソースコンパイラは以下のようになっています。
リソースコンパイラ | リソースコンパイラ/バインダ | |
旧 | Borland Resource Compiler BRCC32.EXE |
Borland Resource Compiler / Binder BRC32.EXE |
新 | Microsoft Windows Resource Compiler RC.EXE |
CodeGear Resource Compiler / Binder CGRC.EXE |
"リソースコンパイラ" はリソーススクリプトをコンパイルするものですね。"リソースコンパイラ/バインダ" というのは、"リソーススクリプトをコンパイルもするけど、EXE にリソースを埋め込んじゃったりもできるよ" というツールです。
Unicode な文字列リソースを含んだリソースファイルを作るにはリソーススクリプトファイルを CGRC.EXE でコンパイルします。
Microsoft 社の リソースコンパイラ (RC.EXE) に慣れている方は、そのまま RC.EXE を使えばいいのですが、BRCC32.EXE を使っていた方は CGRC.EXE を使うと便利です。CGRC.EXE のリソースコンパイラ部分は RC.EXE が担っていますが、RC.EXE のコマンドラインスイッチは BRCC32.EXE と異なります。CGRC.EXE を使う事によって、RC.EXE を BRCC32.EXE 互換のスイッチで利用できるのです。
リソーススクリプトファイル "test.rc" を単純に "CGRC.EXE test.rc" としてコンパイルすると、"test.res" が生成されます。
文字列リソースをリソーススクリプトファイルに記述してみましょう。
|
文字エンコーディングは Shift-JIS で保存します。このままだと、ANSI な文字列リソースになってしまいます。
|
C++ みたいですね。このように、リテラルを "L" 付きで表記するとリソーススクリプトファイル (*.rc) の文字エンコーディングが ANSI であっても、WideString な文字列リソースになります。
|
このように、"\x(16進4桁)" で、WideChar を表す事もできます。リソーススクリプトファイル (*.rc) の文字エンコーディングが ANSI であっても、Unicode (UTF-16) の文字を表現できる訳です。サロゲートペアも2組の WideChar で表せます。
|
リソーススクリプトファイル (*.rc) を UTF-16 で保存すると、サロゲートペアも直接記述できます...まぁ、Delphi のコードエディタが UTF-16 に対応していない ので、サロゲートペアを 16 進表記するか、UTF-8 で保存 するべきでしょう。
なお、リソーススクリプトファイル (*.rc) を UTF-16 / UTF-8 で保存すると、リテラルを "L" 付きで表記しなくても、Unicode (UTF-16) の文字列リソースになるようですが、間違いが起きる可能性があるので、明示的に "L" の指定をした方がいいと思います。
ANSI と Unicode (UTF-16) の文字列リソースを混在させるには、リソーススクリプトファイル (*.rc) を ANSI で保存した上で、Unicode はリテラルを "L" 付きで表記、ANSI は "L" なしで表記する事で実現可能です。
STRINGTABLE は C++ で言う所の t_char なので、リテラルの型として "u8" とか "u" とか "U" とかは使えません...C++0x じゃないんだから。
この Tips のあちこちに書いてしまったのでまとめてみます。
スイッチ | 説明 |
-ns | スプラッシュを表示しない |
-np | プロジェクトをロードしない |
-ppersonality | パーソナリティを指定して起動 |
-rregkey | 代替レジストリキーを利用して起動 |
-nocache | キャッシュを利用せずに起動 |
-p は、"BDS.EXE -pDelphi" のように指定すると、RAD Studio ではなく Delphi を単体で起動します。これにより、不要なパッケージをロードしなくなるので、起動時間を短縮する事ができます。
-r は、異なるパッケージや設定を持つ複数の環境を、コンフリクトさせる事なく同時に利用 するのに使います。
バージョン | レジストリエントリ |
2007 | [HKEY_CURRENT_USER\Software\Borland\TESTREG\5.0] |
2009 | [HKEY_CURRENT_USER\Software\Codegear\TESTREG\6.0] |
2010 | [HKEY_CURRENT_USER\Software\Codegear\TESTREG\7.0] |
XE | [HKEY_CURRENT_USER\Software\Embarcadero\TESTREG\8.0] |
XE2 | [HKEY_CURRENT_USER\Software\Embarcadero\TESTREG\9.0] |
XE3 | [HKEY_CURRENT_USER\Software\Embarcadero\TESTREG\10.0] |
XE4 | [HKEY_CURRENT_USER\Software\Embarcadero\TESTREG\11.0] |
XE5 | [HKEY_CURRENT_USER\Software\Embarcadero\TESTREG\12.0] |
XE6 | [HKEY_CURRENT_USER\Software\Embarcadero\TESTREG\14.0] |
XE7 | [HKEY_CURRENT_USER\Software\Embarcadero\TESTREG\15.0] |
にレジストリのコピーが作られた後に IDE が起動します。事前にレジストリの複製を作る必要はありません。
-nocache は、キャッシュを利用せずに起動しますが、キャッシュとはツールパレットアイコンのキャッシュを指すのか、他にも影響されるキャッシュがあるのかは不明です。
日本語が使えるコードページの一覧です。
コードページ | 名称 | 説明 |
932 | shift_jis | Windows の SHIFT-JIS です。Microsoft 独自の SHIFT-JIS なので、他 OS とは互換性のない文字もあります。 |
10001 | x-mac-japanese | Mac の SHIFT-JIS です。Apple 独自の SHIFT-JIS なので、他 OS とは互換性のない文字もあります。 |
20290 | IBM290 / x-EBCDIC-JapaneseKatakana | IBM の 日本語 EBCDIC (カタカナ拡張) です。 |
20932 | EUC-JP | EUC-JP です。Microsoft 独自の EUC-JP なので、他 OS とは互換性のない文字もあります。eucJP-ms ではありません。 |
50220 | iso-2022-jp | JIS-CODE です。ISO-2022-JP と言ったら普通はこの実装です。全角文字や半角文字に変化した場合に3バイトのエスケープが発生し、半角カナは存在しません (他コードページの半角カナは全角カナに変換されます)。 |
50221 | csISO2022JP | JIS-CODE です。全角文字や半角文字、半角カナに変化した場合に3バイトのエスケープが発生し、半角カナはエスケープシーケンスでエスケープされます。 |
50222 | iso-2022-jp | JIS-CODE です。全角文字や半角文字に変化した場合に3バイトのエスケープが発生し、半角カナは<SI>/<SO>でエスケープされます。 |
51932 | EUC-JP | EUC-JP です。Microsoft 独自の EUC-JP なので、他 OS とは互換性のない文字もあります。IE で使われている EUC-JP です。<!> TEncoding には指定できません <!> |
65000 | utf-7 | UTF-7 (Unicode) です。CP_UTF7 という定数が用意されています。 |
65001 | utf-8 | UTF-8 (Unicode) です。CP_UTF8 という定数が用意されています。 |
"TEncoding に使えないコードページ" は、mlang.dll にある ConvertINetMultiByteToUnicode() / ConvertINetUnicodeToMultiByte() を利用します。 面倒な場合は、MECSUtils の ConvertMultiByteToUnicode() / ConvertUnicodeToMultiByte() を使ってみて下さい。
理由がよく解らないのですが、
状況依存ヘルプ (F1 ヘルプ) をアプリケーションに組み込むには? (2005 以降)
uses に WinHelpViewer を追加します。
|
uses に HTMLHelpViewer を追加します。
|
後は、
HTML-Help (*.chm) を作る際には html の文字コードを SHIFT-JIS にする必要があります。html だからと、UTF-8 等を使ってしまうと文字化けを起こしてしまいます。
http://docs.embarcadero.com/products/rad_studio/ に PDF がありますので、それを印刷しましょう。
中身はオンラインヘルプとは異なっており、旧来の分厚いマニュアルっぽい構成になっています。Common にはオンラインヘルプに書かれていない情報 (または書かれていても見つけにくい情報) がありますので、余裕のある方は両面印刷して眺めて見る事をオススメします。
Delphi 2009 のマニュアルを印刷した場合の費用を概算で見積ってみます。
内容 | ページ数 | 説明 |
BlackfishSQL | 151 | |
Generic Collections | 164 | |
Common | 1,304 | 言語ガイドが含まれる |
Win32 | 2,742 | コンポーネント開発者ガイド、データベースアプリケーション開発者ガイドが含まれる |
VCL | 30,974 | |
合計 | 35,335 |
このボリュームですから、チューブファイルに綴じることになります。コピー用紙は "1 枚 = 0.01mm" と考えるといいので、両面印刷した場合、80mm サイズのチューブファイルには 1,600 ページが収まる事になります。
内容 | 枚数 | 用紙価格 | チューブファイル | ファイル価格 | 計 |
BlackfishSQL + Generic Collections | 158 | 127円 | 20mm(200枚)×1 | 504円 | 631円 |
Common | 652 | 522円 | 80mm(800枚)×1 | 819円 | 1,341円 |
Win32 | 1,371 | 1,097円 | 80mm(800枚)×2 | 1,638円 | 2,735円 |
VCL | 15,487 | 12,390円 | 100mm(1,000枚)×15, 50mm(500枚)×1 | 14,741円 | 27,131円 |
合計 | 17,668 | 14,136円 | 17,702円 | 31,831円 |
コピー用紙はピンキリなので、"A4用紙1枚=0.8円" の計算で、チューブファイルは Amazon の価格です。上記表は稟議書等の申請書の目安としてお使い下さい。
VCL を除けば、
BACK |