ActiveXコントロールを自作し参照設定を行った場合には
Formからプロパティーの取得や設定・メソッドの起動(?)ができます。
しかし、OCXを動的に参照した場合の記述方法がわかりません。
開発環境
WindowsXP Pro
VisualBasic 6.0(SP6)
例えば・・プロパティー1個、メソッド1個のコントロールを作成
〆OCX情報
・ライブラリ名:Project1
・クラス名 :UserControl
・プロパティー:PaperName
・メソッド :DataBind
〆標準Exeを新規作成し、Form1のクリックイベントなどへ記述
Dim CtlObj as Object
Set CtlObj = Controls.Add(Project1.UserControl, "UCon")
With CtlObj
.Top = 50
.Left = 50
.Height = 250
.Width = 250
.PaperName = "文字列をセット" ← ここで実行時エラー'438'になります。
.DataBind ← もちろんここでもエラー【オブジェクトとは、このプロパティー又はメソッドをサポートしていません。】
End With
ご教授よろしくお願いいたします。
> ActiveXコントロールを自作し参照設定を行った場合には
「参照設定」ではなく、「コンポーネントの追加」なのでは?
> .PaperName = "文字列をセット" ← ここで実行時エラー'438'になります。
この部分で使えるのは、「コンテナ側(つまりVB6)が提供しているプロパティ」だけです。
「ActiveXコントロール側が提供しているプロパティ」を操作するには、
objectプロパティ もしくは Objectプロパティ を使います。
http://www.microsoft.com/japan/developer/library/vb98/vbproobjectextd.htm
つまりこの場合は、
.Object.PaperName = "〜"
ですね。
# 普段は、objectプロパティ経由でアクセスする事はめったに無いので、
# objectプロパティの存在自体を知らない人も多いかも。
たとえば、RichTextBoxであればこんな感じ。
Option Explicit
Private Const RTB_LICENSE_KEY As String = "ここにライセンスキーを記述"
Private WithEvents RTB1 As VBControlExtender
Private Sub Form_Load()
Licenses.Add "RICHTEXT.RichtextCtrl", RTB_LICENSE_KEY
Set RTB1 = Controls.Add("RICHTEXT.RichtextCtrl", "RTB1")
RTB1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
RTB1.Visible = True
'これはエラー
'RTB1.BackColor = vbYellow
'これならOK
RTB1.object.BackColor = vbYellow
End Sub
>「参照設定」ではなく、「コンポーネントの追加」なのでは?
そうですね。。。お恥ずかしい
># 普段は、objectプロパティ経由でアクセスする事はめったに無いので、
># objectプロパティの存在自体を知らない人も多いかも。
objectプロパティーの存在自体は知ってましたが、用途については知りませんでした。今まで使わなきゃいけない事態にもならなかったですしね。
本当にありがとうございました。
お蔭様で参照する事ができました。
ツイート | ![]() |