フォーラム


ゲスト  

ようこそ ゲスト さん。このフォーラムに投稿するには 登録が必要です。

ページ: [1]
トピック: コンポーネントの作り方の概要
DEKO
管理者
投稿数: 2691
コンポーネントの作り方の概要
on: 2013/04/04 19:56 Thu

古いコンポーネントは

  • インストール用ユニット
  • コンポーネントクラス
  • コンポーネントエディタ
  • プロパティエディタ

が一緒になっているものがあります。

このようなコンポーネントをパッケージに含めるためには、パッケージが "設計時 / 実行時で使用可能" でなくてはなりません。
ですが、これだと生成されたバイナリには必要のないロジックが含まれる事になりとても効率が悪いです。

今時のコンポーネントは

  • 設計時パッケージ
  • 実行時パッケージ

に分離されており、コンポーネントエディタ / プロパティエディタは設計時パッケージに含まれています。
これだと生成されたバイナリにはコンポーネントのロジックのみが含まれます。

また、32bit / 64bit 両対応コンポーネントを作るためには "コンポーネントエディタ / プロパティエディタがなかったとしても" 実行時パッケージと設計時パッケージを分離する必要があります。"設計時/実行時パッケージ" では 64bit 対応にできません。何故なら、IDE で設計時パッケージとして使えるようにするには常に Win32 でコンパイルされている必要があるからです。

実行時パッケージと設計時パッケージが分離されている場合、

  • 設計時パッケージ -> 常に Win32 でコンパイルされる
  • 実行時パッケージ -> 各プラットフォームに合わせてコンパイルされる

このようになり 64bit 対応ができますが、"設計時/実行時パッケージ" だと

  • 設計時/実行時パッケージ -> 常に Win32 でコンパイルされる

こうなってしまい、プラットフォームで 64bit を選択するとコンポーネントのアイコンがグレーアウトしてしまいます。

以下の URL には "設計時/実行時パッケージ" でも 64bit 対応できるような事を書いてありますね。

[設計時および実行時に利用可能なコンポーネント (DocWiki)]
http://bit.ly/19fCpCz

私のやり方が悪いだけなのか?

See Also:
[Creating Packages (Delphi Programming)]
http://delphi.wikia.com/wiki/Creating_Packages

DEKO
管理者
投稿数: 2691
Re: コンポーネントの作り方の概要
on: 2013/06/20 15:11 Thu

XE2 以降で使えるパッケージのサンプルをアップしておきます。

[UserEx サンプルパッケージ]
http://ht-deko.minim.ne.jp/software/userex_sample_package.zip

・コンポーネント本体 / ユニット
実行時パッケージに入れます。
(パッケージプロジェクトに追加するだけ)

・コンポーネントエディタ / プロパティエディタ
設計時パッケージに入れます。
コンポーネント登録用ユニットの uses を記述し、Register 手続き内に

  • RegisterComponent
  • RegisterComponentEditor
  • RegisterPropertyEditor

を記述します。場合によっては requires に実行時パッケージを含めます。

コンポーネントエディタ / プロパティエディタを登録する場合には コンポーネント登録用ユニットの uses に DesignIntf を追加し、requires に DesignIDE を含めます。

See Also:
[コンポーネントの作成と登録 (DocWiki)]
http://docwiki.embarcadero.com/RADStudio/ja/%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%A8%E7%99%BB%E9%8C%B2

[プロパティエディタを登録する (DocWiki)]
http://docwiki.embarcadero.com/RADStudio/ja/%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E3%82%92%E7%99%BB%E9%8C%B2%E3%81%99%E3%82%8B

[System.Classes.RegisterComponents (DocWiki)]
http://docwiki.embarcadero.com/Libraries/ja/System.Classes.RegisterComponents

[DesignIntf.RegisterComponentEditor (DocWiki)]
http://docwiki.embarcadero.com/Libraries/ja/DesignIntf.RegisterComponentEditor

[DesignIntf.RegisterPropertyEditor (DocWiki)]
http://docwiki.embarcadero.com/Libraries/ja/DesignIntf.RegisterPropertyEditor

DEKO
管理者
投稿数: 2691
Re: コンポーネントの作り方の概要
on: 2013/06/20 15:39 Thu

サンプルパッケージに既存のコンポーネントを入れる場合には以下の作業を行わなくてはなりません。

  • "コンポーネント" と "コンポーネントエディタ / プロパティエディタ" を別ユニットに分離
  • RegisterComponent がコード中にあるのなら削除し、登録用ユニットに記述
  • 64bit 対応 (任意)

See Also:
[64bit 対応コンポーネント]
http://ht-deko.minim.ne.jp/delphiforum/?vasthtmlaction=viewtopic&t=44
[文字列プロパティエディタ]
http://ht-deko.minim.ne.jp/ft1211.html#121106_01

Mr.XRAY
メンバー
投稿数: 192
Re: コンポーネントの作り方の概要
on: 2013/06/22 17:43 Sat

引用 DEKO on 2013/06/20 15:39 Thu

  • "コンポーネント" と "コンポーネントエディタ / プロパティエディタ" を別ユニットに分離
  • RegisterComponent がコード中にあるのなら削除し、登録用ユニットに記述

 
Delphi を使い始めた頃は,別ユニットになっていないコンポーネントがありました.
その後,どのバージョンからそうなったのかは忘れましたが,必要なったようです.
ネットから入手したコンポーネントを修正した覚えがあります.
古いバージョンで作成されているコンポーネントを利用する時は要注意ですね.

DEKO
管理者
投稿数: 2691
Re: コンポーネントの作り方の概要
on: 2013/06/22 20:02 Sat

引用 Mr.XRAY on 2013/06/22 17:43 Sat
古いバージョンで作成されているコンポーネントを利用する時は要注意ですね.

 
もう、コンポーネントは Delphi 7 を最低ラインにしていいと思うのです。エンバカさんがくれる旧バージョンも 7 が一番古いですから。

Delphi 7 でも 10年以上前の製品ですし、あまりにも古い環境を考慮するとなると、コンポーネントエディタやプロパティエディタでフォームを使っている場合、フォームの互換性の問題が出てくるので、いつまで経っても "バイナリ形式 DFM" を使わなくてはならなくなります。

秘伝のタレ的な古いコンポーネント…例えば FDelphi が活発だった Delphi 5 以前に作られたコンポーネントはこれを機に(?)一度見直してみるといいかもしれません。何か配布制限のない古いコンポーネントがあるのでしたら、それをサンプルにしたコンポーネントのマイグレーション記事を書いてみたいですね。

Mr.XRAY
メンバー
投稿数: 192
Re: コンポーネントの作り方の概要
on: 2013/06/22 22:19 Sat

引用 DEKO on 2013/06/22 20:02 Sat
秘伝のタレ的な古いコンポーネント…例えば FDelphi が活発だった Delphi 5 以前に作られたコンポーネントはこれを機に(?)一度見直してみるといいかもしれません。何か配布制限のない古いコンポーネントがあるのでしたら、それをサンプルにしたコンポーネントのマイグレーション記事を書いてみたいですね。

 
マイグレーションは丁重にパスさせて頂きます (笑).
古いコンポーネントは,配布条件が明確に書かれていないものもあります.
再配布や改変の再配布は作者の了解が必要と書いてあっても,連絡が取れなくなっているものもあります.
貴重なコンポーネントもあり,何かもったいない気がします.
でも,「秘伝のタレ的」というのにちょっと気持ちの揺らぎますね.

DEKO
管理者
投稿数: 2691
Re: コンポーネントの作り方の概要
on: 2013/06/22 22:31 Sat

引用 Mr.XRAY on 2013/06/22 22:19 Sat
古いコンポーネントは,配布条件が明確に書かれていないものもあります.
再配布や改変の再配布は作者の了解が必要と書いてあっても,連絡が取れなくなっているものもあります.

 
そうなんですよ。
だから 「実例を出せればもっと解りやすく書けるのにー」 と思った次第でして。

  • 単一の *.pas なコンポーネント。
  • プロパティエディタかコンポーネントエディタが含まれている。
  • 改変 / 再配布に制限がない。
  • 現在もどこかで DL 可能。

これらの条件を満たすコンポーネントがないものかと。

DEKO
管理者
投稿数: 2691
Re: コンポーネントの作り方の概要
on: 2013/06/23 22:56 Sun

…てな訳で、LightReport2 をサンプルにして記事を書いてみました。

[LightReport2 Unicode 版を 64bit 対応にしてみる]
http://ht-deko.minim.ne.jp/delphiforum/?vasthtmlaction=viewtopic&t=1222

ページ: [1]
WP Forum Server by ForumPress | LucidCrew
バージョン: 1.7.5 ; ページロード: 0.041 sec.