大人になっても苦手な食べ物、ありますか?

ユーザーコントロールを作成し、デザイナ上でユーザコントロールを追加した場合には、コード上でLeftプロパティなどの自身で作成したプロパティ・関数以外でも参照ができるのですが、
コード上で動的にコントロールを追加した場合、自身作成したプロパティ・関数のみしか参照ができません。

ユーザコントロールの作成時に「公開する」的なプロパティ等の設定が必要なのでしょうか?

環境は、VB6/WindowsXP です。
ご存知の方がいらっしゃいましたら、ご教授ください。

A 回答 (2件)

UserControl側にVisibleプロパティのLet,Getが必要ですよ


ZOrderに関してもメソッドとして実装が必要です

Public Property Let Visible( value as boolean)
  extender.visible = value
End Property

Public Property Get Visible() as boolean
  Visible = Extender.Visible
End Property

Public Sub Zorder(value as integer)
  Extender.Zorder value
End Sub
といった具合の実装です

Left,Topに関してもExtenderオブジェクトが管理してますよ
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
教えていただいたとおり、上記を実装したところ正常に参照可能になりました。
正直なところ、まだExtenderオブジェクトがどういうものなのか…
あまり理解できていませんが、これから自身で調べてみようと思います。

本当に助かりました、ありがとうございます。
また、質問した際にはよろしくお願いしますm(_ _)m

お礼日時:2008/10/07 16:15

具体的にいつその取れないデータを取得したいのでしょう



ユーザーコントロール側のコード、動的に追加するコード
どこで、どのようなエラーになるかを明示しましょう

この回答への補足

何も明示しておらず申し訳ありません。

>具体的にいつその取れないデータを取得したいのでしょう
動的にコントロールを追加した直後、配置場所を設定するためにLeft/Top/Visibleなどのプロパティを参照したいのです。
イベント的には、FormのLoadイベント内で行っています。

>ユーザーコントロール側のコード、動的に追加するコード
>どこで、どのようなエラーになるかを明示しましょう
 下記のコード上で、Form1の
 > myTabPageCtrl(1).Visible = True
 にて、コンパイルエラー:メソッドまたはデータメンバが見つかりません。
 となります。
 別途CommandButtonを動的に生成した場合や、デザイン上でユーザコントロールを追加した際には正常に参照可能でコンパイルエラーにもなりません。

【ユーザーコントロール】
デザイン時:ControlContainerプロパティをTrueにしました。
コード:以下のとおりです。(省略していますが…)
Option Explicit
'==========================================================
'当ユーザコントロール初期化処理
'==========================================================
Public Sub Initialize()
'コントロール再配置
'⇒この関数内で、ユーザコントロール内のコントロール等の初期化を行っています。 省略…
End Sub

【フォーム】
Private myTabPageCtrl(3) As Project1.TabPageControl
'==========================================================
'関数名:Form_Load
'概 要:画面ロードイベント
'    ・画面起動時の初期処理を行う。
'==========================================================
Private Sub Form_Load()

'タブ初期化
TabStripMain.Tabs.Clear

'タブの追加
Set myTabPageCtrl(1) = Form1.Controls.Add("Project1.TabPageControl", "myTab1")
myTabPageCtrl(1).Initialize
myTabPageCtrl(1).Visible = True
myTabPageCtrl(1).ZOrder 0

Set myTabPageCtrl(2) = Form1.Controls.Add("Project1.TabPageControl", "myTab2")
myTabPageCtrl(2).Initialize

Set myTabPageCtrl(3) = Form1.Controls.Add("Project1.TabPageControl", "myTab3")
myTabPageCtrl(3).Initialize
End Sub

補足日時:2008/10/07 09:04
    • good
    • 0
この回答へのお礼

ご指摘いただきありがとうございます。
以後気をつけて質問いたしますm(_ _)m

お礼日時:2008/10/07 09:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報