VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2006/12/05(Tue) 19:11
投稿者魔界の仮面弁士
Eメール
URL
タイトルRe: 既存のコントロールにメソッドを追加

> 独自のメソッドを追加する方法がわからずに困っています。

UserControl にラッピングするという方法がありますが、あまりお奨めはできません。
VB6 には、実装継承がサポートされていないからです。(インターフェイス継承は可能)


なので、コントロール自体にメソッドを直接追加するのではなく、
  Public Sub Anything(ByVal x As 何とかコントロール)
のように、そのコントロールのインスタンスを受け取って処理するようなクラス
(あるいはモジュール)を作るというのは如何でしょう?

もし、Decoratorパターン(?) っぽい作りにするなら、こんな手法があります。
http://web.archive.org/web/20041012230232/www.gj.il24.net/~nakasima/vb/tech/excontrol/index.htm


> クラスファイル(Class1)を追加して
> Implements vaSpread と記述してみたのですが、

Implements は、インターフェイスのみを継承しますので、それぞれのメソッドの処理実装は、
元のオブジェクトに委譲するか、あるいは自力実装する必要があります。


> 「インターフェイスまたはクラスをインプリメントする場合、
>  関連するすべてのパブリック (Public) プロシージャを含める必要があります。」

コードウィンドウ右上のコンボボックスを選択すると、指定したインターフェイスが持つ
Public メンバの定義が、コードウィンドウに展開されます。それを繰り返して、
そのインターフェイスが持つすべての Public メンバを展開してください。

あとは、展開された各プロシージャに、それぞれのメソッドに応じた実装を書くことになる、と。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -