読者です 読者をやめる 読者になる 読者になる

C++Builder2010にDelphi用のシェルコントロールコンポーネントをインストールする。

$(BDSCOMMONDIR)\Demos\CPP\Apps\ShellControlsにある、C++Builder用のシェルコントロールコンポーネントが不安定なので、Delphi用のサンプルをインストール。

  1. [ファイル|新規作成|パッケージ]で新規パッケージを作成する
  2. プロジェクトを保存。プロジェクト名は"ShellControlCB14.cbproj"とした。
  3. $(BDSCOMMONDIR)\Demos\DelphiWin32\VCLWin32\ShellControlsにある、*.pasと*.dfmをプロジェクトファイルがあるフォルダにコピー。
  4. *.pasをプロジェクトに追加
  5. プロジェクトオプションを開く
  6. [ディレクトリと条件定義|_TCHARのマップ先]をwchar_tにする
  7. [Delphiコンパイラ|コンパイル|コンパイラに渡す追加オプション]に"-LUdesignide -M"を設定
  8. [情報|説明]に"Win32 Shell Controls"を設定
  9. [OK]ボタンをクリックしてウィンドウを閉じる
  10. パッケージをビルド
  11. プロジェクトマネージャーで[インストール]を選択して、パッケージをインストール

UniSynEdit系もそうだし、コンパイルエラーやリンクエラーであれこれ悩むよりは、新規プロジェクトを作成して、Delphi用のプロジェクトが参照しているユニットの類を片っ端からプロジェクトに突っ込むのは最善な方法なのかもしれない。

追記1:
TShellComboBoxのAlignプロパティが設定できないので、ShellCtrls.pasの359行近辺に"property Align;"を追加して、Alignプロパティを公開するようにした。

{ TShellComboBox }

  TShellComboBox = class(TCustomShellComboBox)
  published
    property Images;
    property Root;
    property ShellTreeView;
    property ShellListView;
    property UseShellImages;
    property OnGetImageIndex;
    property Align; // ←追加
    property Anchors;
    property BiDiMode;
    property Color;

追記2:
Delphiを持っていれば、プロジェクトオプションの[Delphiコンパイラ|リンク|リンカ出力]を"すべての C++ Builder ファイル(パッケージ ライブラリを含む)を生成"にして、コンポーネントをビルド&インストールするとDelphi用のコンポーネントC++Builderで使えたはずだけど、使えない場合がある。この辺の法則って何なんだろ。