今回は、VB6でコントロールを作成してみようと思っています。
そこで、まず、プロパティを作成しようと考えました。
とはいうものの、コーディング方法がわからないので、
ActiveXコントロールインターフェイスウィザードを
使用して、Fontプロパティを作ってみました。
その結果、以下のようなコードが追加されていました。
01 : '警告! 以下のコメント行を変更または削除しないでください !
02 : 'MappingInfo=UserControl,UserControl,-1,Font
03 : Public Property Get Font() As Font
04 : Set Font = UserControl.Font
05 : End Property
06 :
07 : Public Property Set Font(ByVal New_Font As Font)
08 : Set UserControl.Font = New_Font
09 : PropertyChanged "Font"
10 : End Property
11 :
12 : 'ユーザー コントロールのプロパティを初期化します。
13 : Private Sub UserControl_InitProperties()
14 : Set UserControl.Font = Ambient.Font
15 : End Sub
16 :
17 : '記憶領域からプロパティ値を読み込みます。
18 : Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
19 :
20 : Set UserControl.Font = PropBag.ReadProperty("Font", Ambient.Font)
21 : End Sub
22 :
23 : '記憶領域にプロパティ値を書き込みます。
24 : Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
25 :
26 : Call PropBag.WriteProperty("Font", UserControl.Font, Ambient.Font)
27 : End Sub
そこで、質問です。
・01行目の内容の対象は02行目だけなのか?
・02行目が意味を持つ意味とは?
・03行目と07行目はプロパティの読み出しと書き込みですよね。
・13行目、18行目、24行目が初めて目にするイベントなんで、
教えていただきたいです。
以上、よろしくお願いいたします。
> ・01行目の内容の対象は02行目だけなのか?
02行目は、03行目/07行目に対する、いわゆる「メタ情報」です。
削除してもプログラム的には問題ありませんが、
ウィザードを再度実行した場合に、関連情報がクリアされます。
> ・02行目が意味を持つ意味とは?
02行目は、ウィザードのために使われる情報です。
具体的には、Font プロパティが UserControl.Font に対して
マッピングされている、ということを示しています。
> ・03行目と07行目はプロパティの読み出しと書き込みですよね。
そうです。
> ・13行目、18行目、24行目が初めて目にするイベントなんで、
> 教えていただきたいです。
まずは、VB6のヘルプを読んでみましょう。
その中で、わからない点を具体的に質問してください。
読むべきトピックは幾つかありますが、まずは取っ掛かりとして、
[Visual Basic ドキュメント]
[Visual Basic の使用方法]
[コンポーネント ツール ガイド]
[ActiveX コンポーネントの作成方法]
[ActiveX コントロールの作成技術]
[コントロールの基本的な作成方法]
[コントロールの有効期間およびキー イベントについての知識]
と、その周辺のトピックを読んでみてください。
大まかな流れがわかるかと思います。
1行目、2行目がメタ情報であることは理解いたしました。
また、各プロパティも理解いたしました。
> ・13行目、18行目、24行目が初めて目にするイベントなんで、
> 教えていただきたいです。
なんですが、MSDNで、
どんなイベントなのかは、理解したつもりですが、
実際にデバッグしてみると、CALLされないのです。
(Init...はCALLされています。)
また、ユーザコントロールのフォントプロパティを
指定された場合に、各テキストボックスなどの、
フォントを指定しようとしていますが、
上手く動作していません。
フォントプロパティは以下のように作成しています。
Public Property Get Font() As Font
Set Font = UserControl.Font
End Property
Public Property Set Font(ByVal New_Font As Font)
Set UserControl.Font = New_Font
Set UserControl.txtAAA.Font = New_Font
Set UserControl.txtBBB.Font = New_Font
PropertyChanged "Font"
End Property
皆様のご指摘お待ちしております。
提示された2つのイベントプロシージャの内容を、
Private Sub UserControl_InitProperties()
Set Font = Ambient.Font
End Sub
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
Set Font = PropBag.ReadProperty("Font", Ambient.Font)
End Sub
のようにしておくとか。
ツイート | ![]() |