自分が作ったOCXをフォームに配置するには?

解決


かんとく  2010-08-19 10:32:24  No: 39022  IP: 192.*.*.*

お世話になっております。

XP,Delphi2007です。

Delphiを使って自分が作ったOCXを、新しいアプリケーションでフォームに配置するには、どうしたらよいのでしょうか。

自分が作ったOCXを、VB6でフォームに配置するには、
プロジェクト→コンポーネント→コントロール
から自分が作ったOCXを選択すると、ツールボックスに追加され、フォームに配置することができます。

Delphi(2007)では、どうするのでしょうか。

よろしくお願いします。

編集 削除
igy  2010-08-20 21:53:25  No: 39023  IP: 192.*.*.*

OCXは作ったことがないので、はずしているかもしれませんが・・・

メニュー「コンポーネント」−「コンポーネントのインポート」の
「ActiveXコントロールの取り込み」

は、いかがですか?

編集 削除
かんとく  2010-08-23 14:18:08  No: 39024  IP: 192.*.*.*

ありがとうございます。

コンポーネント→コンポーネントのインポート→ActiveXコントロールの取り込み
から、自分の作ったocxファイルを選択して、
Project1.dprojプロジェクトにユニットを追加
をすると、画面右上のプロジェクトマネージャー部分にファイル名が表示されます。
しかし、フォームに配置することができません。
MemoやButton等と同じ感覚でフォームに配置できる方法があると思うんですが、分かりません。

自分の作ったocxファイルを選択したあと、
ユニットの作成
を選択しても、やはりフォームに配置できません。

よろしくお願いします。

編集 削除
igy  2010-08-23 15:26:56  No: 39025  IP: 192.*.*.*

>Project1.dprojプロジェクトにユニットを追加をすると、

試していないのですが、

取り込んだOCXを、コンポーネントとして新規パッケージか既存のパッケージにインストールし、
ツールパレットからコンポーネントとして、選ぶことはできますか?

編集 削除
かんとく  2010-08-23 16:18:45  No: 39026  IP: 192.*.*.*

ありがとうございます。

>取り込んだOCXを、コンポーネントとして新規パッケージか既存のパッケージにインストールし、
というところが、具体的にどう操作したらよいのか分かりませんでした。

取り込んだあとに、
コンポーネント→VCLコンポーネントの新規作成
や、
コンポーネント→パッケージのインストール
をしても、リストに自作のocxのファイル名が表示されません。
ここで、ファイルから追加しようとしても、拡張子がbplのファイルしか表示されないので、ocxファイルを選択できません。

自分でももう少し調べてみますが、引き続き、よろしくお願いします。

編集 削除
igy  2010-08-24 07:34:29  No: 39027  IP: 192.*.*.*

試していませんが、

>メニュー「コンポーネント」−「コンポーネントのインポート」の
>「ActiveXコントロールの取り込み」

で、*+TLB.dcr、*_TLB.pas
が生成されたら、

>>取り込んだOCXを、コンポーネントとして新規パッケージか既存のパッケージにインストールし、
>というところが、具体的にどう操作したらよいのか分かりませんでした。

コンポーネントのインストール方法 (Delphi 2007) 
http://mrxray.on.coocan.jp/Delphi/CompoInstall/CompInstallD2007.htm

を参考に、コンポーネントをインストールできますか?

編集 削除
かんとく  2010-08-27 18:42:53  No: 39028  IP: 192.*.*.*

ありがとうございます。

教えていただいたサイトを見ながら、作業をしてみました。

図7の追加まではできたのですが、
図8の[コンパイル]または[再構築]のところで、どちらを選択してもエラーが出ます。

コンパイルを実行すると、
「$DENYPACKAGEUNITが指定している'ComServ'はパッケージに置くことはできません」というエラーが、画面下部のメッセージのところに表示され、コンパイルがストップしてしまいます。

もう少し調べてみますが、引き続きよろしくお願いします。

編集 削除
かんとく  2010-10-01 10:41:53  No: 39029  IP: 192.*.*.*

お返事遅れてすみません。(誰に?)

結局OCXをフォームに配置する方法は分かりませんでしたが、フレームを使うことで、やりたかったこととほぼ同じ事ができました。

まず、フレームを作成し、そのフレームを配置したいフォームで、ツールパレットのStandardのFramesを選択して、さきほど作ったフレームを選択したら、フォームに配置することができました。


アプリケーションを配布するときに、プログラム本体とOCXファイルが別々だと、ランタイムエラーの原因にもなるので、フレームを使ったこの方法のほうが良いかなと思います。

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

編集 削除