クラスからクラス内のFormにPictureBoxを描画させようとしています。
(クラス外からのグラフ描画を行いたいため)
Form内で描画関連の関数が完結している場合は、Formのリサイズ時にこれらの関数を呼べばPictureBoxの再描画ができますが、今回のように、クラスからPictureBoxの描画を行っている場合は、Formのリサイズ時にどうやって再描画させればいいかわかりません。どうすればいいか教えてください。お願いします。
開発環境を教えてください。
VB6.0です。
Formリサイズ時にそのクラスの描画メソッドを呼ぶだけでは?
というか、問題がつかみきれてません。
実は、外部からクラスの関数を使って、グラフの定義(Scaleや軸設定等)を含めて描かせることをしようとしています。このため、グラフのリサイズをした際に、この定義の部分をどうやって呼べばいいのかわかりません。できれば具体的に教えていただけますか?
というかやりたいことがハッキリ伝わってこないので具体的に教えようもない。
クラス内のFormって何?
FormにPictureBoxを描画させるってどういうこと?
自分では分かってるんだろうけど、この文章を見た人で分かる人はいるんでしょうか?
自分には無理でした。頭の良い方にまかせます。
無理やり質問を下記のように解釈し勝手に回答してみました。
下記のようなクラスを作成し、クラス内で割り当てられたPictureBoxにグラフを
描画しています。
--------------- クラスモジュール(MyClass.cls)ここから
Private mPctBox As PictureBox
Public Property Set MyPic( objPic as PictureBox )
Set mPctBox = objPic
End Property
Public Property Get MyPic() As PictureBox
Set MyPic = mPctBox
End Property
Public Sub Draw()
'mPctBox内の描画処理
End Sub
--------------- クラスモジュールここまで
フォームモジュール内で
Set objPic = New MyClass
Set objPic.MyPic = PictureBox1
のようにピクチャーボックスコントロールをMyClassオブジェクトにセットして
PictureBox1のリサイズをフォームモジュール内で行ったとき、MyClassオブジェクト
に再描画させるにはどうすればいいのでしょうか?
回答)
フォームモジュール内でPictureBoxのリサイズを行った後にMyClassのDrawメソッドを呼ぶ。
Drawメソッドが非公開の場合
クラス内でmPictBoxをWithEvents付きで宣言し、mPictBox_Resizeイベントプロシージャ
内で描画処理を行う。
3−t様 丁寧にご説明いただき、ありがとうございます。
また、私の文章力のない部分をフォローしてご説明いただき、本当に感謝いたします。
さて、私のやりたいことは、ご回答いただいた、WithEvents付きで実現できるのではないかと思っています。このやり方をもう少し詳しく教えていただけますか?すなわち、Witheventsを使って、MyClassにResize時の描画処理をやらせる方法を詳しく教えていただきたいです。よろしくお願いします。
Option Explicit
Private WithEvents mForm As Form
Public Property Set MyForm(objForm As Form)
Set mForm = objForm
End Property
Public Property Get MyForm() As Form
Set MyForm = mForm
End Property
Private Sub mForm_Resize()
'Resize時の描画処理
End Sub
というようなクラスを作り、名前をclsFormにして、
フォームモジュールに、以下のように書けば、
クラス内でFormのイベント処理が出来ます。
Option Explicit
Private objForm As clsForm
Private Sub Form_Load()
Set objForm = New clsForm
Set objForm.MyForm = Me
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set objForm = Nothing
End Sub
多数ご回答をいただきありがとうございます。
再度、やりたいことを書かせていただきます。
■グラフ描画のためのDLLを作成したい。
■グラフの仕様(グラフ種類、数、体裁etc)は決めず、
外部から同DLLを操作することでグラフを描画させる。
(DLLを使用するユーザーが自由に設定できるようにする)
■上記の仕様で、グラフウインドウのリサイズ時に再描画できるようにする。
上記がやりたいことですが、つまるところ、DLLを操作する側で、
リサイズ時の信号をグラフウインドウから受け取る方法がわかれば
上記の仕様が実現できるとわかりました。この方法を教えてください。
よろしくお願いします。
LESIAさんのコードから何もヒントが得られませんでしたか?
せっかく回答してもらってるんだからちょっとは考えてみたら?
LESIAさん、3-tさん 回答ありがとうございます。
一度試してみます。わからないときは、またよろしくお願いします。
ツイート | ![]() |