Delphiでコンポーネントをインストールするとき、ときどき見るエラーです。
この問題とその対応方法については、かなり以前からWeb上で見つけることができます。今更という感じもしますが、他のサイトの情報の中には部分的にしか書かれていない場合もあるため、まとめてみようと思います。
タイトルのエラーが発生したとき、やることは以下の3つです。
1. パスを通す
まずやることは、ソースのあるフォルダのパスを検索パスに追加することです。
[プロジェクト]-[オプション]で、Delphiコンパイラのオプションを表示させます。検索パスに、以下の2つを追加させます。
$(DELPHI)\source\ToolsAPI
$(DELPHI)\source\ToolsAPI\ja
2. パッケージに designide.dcp をインクルードする
パッケージのRequiresに、designideを追加します。
プロジェクトツリーのパッケージ名を右クリックし、コンテキストメニューから[ソースを表示]でパッケージのソースを表示させます。
ソースの中程に、requeresという部分があるため、ここにdesignideを追加します。
また、designideはWin32のみで動作するので、以下のように{$IFDEF WIN32}、{$ENDIF}で囲みましょう。
requires
rtl,
vcl,
{$IFDEF WIN32} // 追加
designide, // 追加
{$ENDIF} // 追加
vclimg;
3. DesignIntfなどを{$IFDEF WIN32}、{$ENDIF}で囲む
以下のように、usesに書かれているDesignIntfを、{$IFDEF WIN32}、{$ENDIF}で囲みます。
また、プロパティエディタなどの設計時のみ必要なユニットも、同じように囲みます。
uses
MzGrid,
{$IFDEF WIN32}
DesignIntf, MzGridPropEditor, // DesignIntf、プロパティエディタを囲む
{$ENDIF}
System.Classes;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('MIZU', [TMzGrid]);
{$IFDEF WIN32}
RegisterComponentEditor(TCustomMzGrid, TMzGridEditor); // コンポーネントエディタも設計時のみなので囲む
{$ENDIF}
end;
あとは、パッケージをコンパイルしてエラーが発生しなければ、インストールできるはずです。