2012-04-02 11 views
0

でActiveXをロードし、ダイナミックで問題私は動的にActiveXコントロールをロードするために使用しています方法を以下しているVB6.0

成功し、フォームに表示するには、このコードコントロールを使用して
Dim ctl As Control 
Set ctl = Form1.Controls.Add("prog.id", "myctl") 
ctl.Visible = True 

が、私は、メソッドにアクセスしよう制御ctl.mymethod()の/プロパティにそのエラーを与える、「オブジェクトは、このメソッドやプロパティをサポートしていません」。

第二に、私はこのアプローチを使用

Dim ctl As Object 
Set ctl = CreateObject("prog.id") 
Ctl.mymethod() 

彼女メソッドから呼び出されましたが、このオブジェクトをフォームに表示することはできません。

この問題に関する解決方法を教えてください。

編集:

私はメソッドを呼び出すときにもエラーを与えてapproch以下の使用方法は、 "オブジェクトがサポートをdoes't ........"

Dim ctl As Object 
Set ctl = Controls.Add("prog.id", "myctl") 
ctl.Visible = True 

答えて

3

ドン」参照をControlと宣言しないでください。これにより、Controlインターフェイスメンバーにしかアクセスできません。 ctlObjectとしてみてください。そうすれば、完全に遅延バインドされます。

Dim ctl As Object 
Set ctl = Controls.Add("COMCTL.ListViewCtrl", "myctl") 
ctl.Visible = True 
ctl.View = 2 
ctl.ListItems.Add , , "123" 
+0

返信いただきありがとうございますが、第2のアプローチを使用してフォームにこのコントロールを追加する方法はありますか? – Siddiqui

+0

実行時にフォームにコントロールを追加するには、 'Controls.Add'を使う必要があります。 – Deanna

+0

私はあなたの返事の後に私の質問を編集しましたを参照してください。 – Siddiqui

1

あなたがコントロールのタイプライブラリ(.TLB)を持っている場合は、それへの参照を追加し、.Object財産のこの

Dim ctl As prog.id 
Set ctl = Controls.Add("prog.id", "myctl").Object 
ctl.mymethod 

お知らせの使用を試してみてください。

+0

システムに登録されている.tlbファイルのみのOCXはありません。私はActiveXのプロパティにアクセスしたい、ActiveXではこのアトリビュートを使用してプロパティを公開する** Public Property LetSelection(bShow As Boolean)** – Siddiqui

+0

ocxファイルからtlbファイルを取得するにはどうすればよいですか? – Siddiqui

+0

@Siddiqui OCXをVB6で作成した場合は、TypeLibが埋め込まれています。 ocxへの参照をプロジェクトに追加しましたか?そうした場合は、F2キーを押してオブジェクトブラウザビューを使用すると、コントロールが表示され、コード内に型名で参照できるはずです。 – tcarvin

関連する問題