TFileStreamのコンポーネント化

解決


たかみちえ  URL  2002-05-21 14:04:17  No: 897  IP: [192.*.*.*]

TFileStreamに機能を追加しようと思って、
コンポーネントを作ったんですけど…。
type
  TBinFile = class(TFileStream)



procedure Register;
begin
  RegisterComponents('Tool',[TBinFile]);
end;
とやってみたら、
RegisterComponentsの行で、
"'TComponentClass' と 'クラス参照' には互換性がありません"
と出てしまいました。
ヘルプや他の人のコンポーネントを参考にしていろいろやってみたんですけど、
エラーが消えません。

  上のclass(TFileStream)をclass(TCompornents)としてみたら、とりあえずこの行のエラーだけは消えたんようなんですけど、
…となると、TFileStreamは継承できないんでしょうか?

編集 削除
にしの  2002-05-21 15:08:16  No: 898  IP: [192.*.*.*]

TFileStreamクラスは、
THandleStream - TStream - TObject
と派生します。
一方、自作コンポーネントは、
TComponent - TPersistent - TObject
と派生していて、TFileStreamがTComponentの派生クラスではないために登録できません。

コンポーネントとして登録したいのであれば、TBinFileをTComponentの派生クラスとして定義して、そのプロパティにTFileStreamを持たせることで実現できます。

編集 削除
たかみちえ  URL  2002-05-22 00:03:29  No: 899  IP: [192.*.*.*]

そうですかぁ…。でも結局書きかえるだけ…ですよね?
じゃあ、そうします。たびたびありがとうございました。

編集 削除