VB6.0にてピクチャーボックスを含むユーザーコントロールを作成しています
ユーザーコントロールにフォントプロパティを持たせ、これによりピクチャーボックスのフォントを変更しようと思います
現在Property Set Fontにて、引数のFontオブジェクトをそのままピクチャーボックスのFontにSetしていますが、変わりません
どうしたら変わりますでしょうか?
アドバイスお願いします
普通にやったら変わりますが・・・。
どのようにやったら変わらないのでしょう?
ちなみにActiveXコントロールインターフェースウィザードによる
インターフェース自動コーディング例
(全部書くとやたら長いのでFontプロパティ部分のみ抜粋)
ちなみに、'MappingInfo で始まるコメント行は
コンパイラ用マッピング情報なので、変更、削除しないこと。
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
Set Picture1.Font = PropBag.ReadProperty("Font", Ambient.Font)
End Sub
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
Call PropBag.WriteProperty("Font", Picture1.Font, Ambient.Font)
End Sub
'MappingInfo=Picture1,Picture1,-1,Font
Public Property Get Font() As Font
Set Font = Picture1.Font
End Property
Public Property Set Font(ByVal New_Font As Font)
Set Picture1.Font = New_Font
PropertyChanged "Font"
End Property
Printメソッドはウィザードでインプリメントできないので
たとえば
'MappingInfo=Picture1,Picture1,-1,Print
Public Sub Print_(ByVal strText As String)
Picture1.Print strText
End Sub
Formでの使用例
プロジェクト→コンポーネントで自作OCXをチェックして、
ツールボックスからFormに貼り付けて
(上の抜粋からは割愛してますが、AutoRedrawも
インプリメントしてます。)
Private Sub Form_Load()
userControl1.AutoRedraw = True
userControl1.Font.Name = "@DF行書体"
userControl1.Font.Size = 48
userControl.Font.Bold = True
userControl.Print_ "ABC"
End Sub
Sayさん、回答ありがとうございます
一つ書き忘れましたが、ocxを作成し、新たに別のフォームに貼り付けてテストすると
デザイン時にプロパティウィンドウでフォントを変更すると反映されるのですが、実行すると元に戻ってしまいます
あと一歩ですかね?
現在のプログラムは、ウィザードで作られた「Property Set」のコードの中に
標準モジュールに定義した画面描写のモジュールを呼んでいます
Public Property Set Font(ByVal New_Font As Font)
Set UserControl.Font = New_Font
'付け加えた部分
Set PicturBox.Font = New_Font 'ピクチャーボックスのフォントを設定
Call Module1.Disp_PicturBox( PicturBox ) '画面描画モジュール呼出
PropertyChanged "Font"
End Property
それと回答の中の
>'MappingInfo=Picture1,Picture1,-1,Print
>Public Sub Print_(ByVal strText As String)
> Picture1.Print strText
>End Sub
のマッピンッグインフォは自分で付け加えたのですか?
>デザイン時にプロパティウィンドウでフォントを変更すると反映されるのですが、実行すると元に戻ってしまいます
UserControl_ReadProperties,UserControl_WritePropertiesの
記述はダテではありません。
ここでメモリエリアに対するプロパティの読み書きをやってます。
>マッピンッグインフォは自分で付け加えたのですか?
そうです。
「多分コンパイラ擬似命令だろう」といういいかげんな発想で書きました。(^_^;
Sayさん毎度どうもすいません
>UserControl_ReadProperties,UserControl_WritePropertiesの
>記述はダテではありません。
>ここでメモリエリアに対するプロパティの読み書きをやってます。
うーん、飾りじゃなかったんですね、これ
すいません、できました・・・
ありがとうございました