2009-07-30 14 views
0

まず、VB6を使用しているので、VB6に適用される技術にあなたの親切な提案を限定してください。VB6アプリケーションを再利用するには?

alt text http://p.blog.csdn.net/images/p_blog_csdn_net/slowgrace/EntryImages/20090730/1633845453754062500.jpg

Iは、上記の図に示すように相互に関連するコントロールのセットを有します。

左のツリービューノードをクリックまたは変更すると、右のコントロールはそれに応じてツリー表示を変更し、その逆も同様です。 。

シーンの背後にあるデータは、Accessデータベースで管理されます。

このデータ管理と表示のセットは、いくつかの異なるアプリケーションで使用されます。そこで私はロジックを実装するためにいくつかのクラスを作成し、これらのクラスモジュールを自分のアプリケーションに何度も追加しました。

私は実際にを再利用します。 "コピー&ペースト"モードのクラスです。それは動作しますが、問題があります。私が授業で変更を加えたら、それを別のアプリケーションで変更する必要があります。

最近、私はこれらをいわゆるActiveXコンポーネントにすることを考えています。しかし、アーキテクチャ全体を再利用するためにどのような種類のActiveXコンポーネントを開発すればよいかわかりません。

一言で言えば、私はを知りたいのですが、どうすればいいですか?「コピー&ペースト」よりももっとうまく再利用できますか?以下は新しい「優雅なREUSE」のアイデアや期待ですが、それらに限定されていません。

(1)私はデザイン時にいくつかのプロパティを設定できるように、プロパティページを持つActiveXコントロールのように思えます。

(2)異なるアプリケーションの場合、右側のサブフォームは異なる情報を表示し、コントロールが異なり、エクストララルコーディングと設計が必要な場合があります。

(3)また、ツリービューとlistviewのためのいくつかの新しい動作をdifferntアプリケーション用にコーディングする必要があるかもしれません。この要件は、フォーム全体の全体的なユーザーコントロールを適切にしません。 MSDNでは「ActiveXコントロールへの参照はクライアントアプリケーションに返されるべきではない」と述べているためです。

答えて

2
  • は、ActiveX DLLを作成します(制御できない)
  • DLL
  • はDLL 内の1つまたは複数のクラスにすべてのあなたのロジックを移動
    でフォームのためのインタフェースを定義ルーチンiを持っているnteractインタフェース
  • スルー形式でアプリケーションの形
  • 一つ初期のインタフェースの実装形態は、ActiveXのDLL

に自身を登録有しこれが効果的にコピーを排除し、異なるアプリケーション間で貼り付けられます。

たとえば、私の金属切断アプリケーションでは、シェイプフォーム、シェイプスクリーンクラス、および一連のシェイプクラスがあります。シェイプクラスのメソッドの2つは、ShapeScreen型のパラメータを持つDrawScreenと、ShapeScreen型のパラメータを持つGetValuesです。

DrawScreenは、ShapeScreenのメソッドを使用して入力画面をセットアップし、Shape Screenセットアップを使用してフォームをIShapeFormインターフェイスで設定します。 GetValuesはShape Screenメソッドを使用して入力されたシェイプ値を取得し、IShapeFormを使用してフォームから値を取得します。

この設定は、お客様の要求に応じて異なる形状入力フォームを開発する必要がある場合に便利でした。新しいフォームはIShapeFormインターフェイスを実装したばかりで、残りのソフトウェアは変更されていませんでした。

+0

「優雅」と聞こえます。ありがとうございます。私はかなりのActiveX dllとインターフェイスの概念を知っていないので。それ以上の説明をお願いしますか? ShapeScreenはdllのクラスであり、IShapeFormというインターフェースを持っています。シェイプクラスはどこにありますか?それらはあなたのdllにもありますか?要するに、私はちょうど "フォームのインターフェイスを実装する"を作ることができません?多形性とは関係がありますか? – SlowGrace

+0

Architechture全体を説明するコードをいくつか教えてください。 – SlowGrace

+0

あなたのDLLにIShapeFormというクラスがあるということですか? DLLのすべてのクラスは、実際のフォームで必要なときにIShapeFormとやりとりします。 DLLを使用するときは、IShapeFormクラスに実際のフォームを登録します。はい、私はこれがあなたの意味だと思います。 – SlowGrace

0

各コントロールをユーザーコントロールにカプセル化し、これらを整理するための仮想ActiveXコントロール統一事にコントロール。

0

これは、ビュー、ドメインロジック、データであるようです。私が目にする主な問題はアイテム2です。アプリからアプリまでの外観やロジックは静的ではありません。あなたが必要とするのは、2つの別々のコントロールでしょうか?左パネルと右パネル。右のパネルは、おそらく静的にならないので、いくつかのタイプの配列のコントロールを実装する予定です。

関連する問題