前回の質問を[解決]にして試してみましたが、結局分からないままふりだしに戻ってしまいまし
た。
> 入力項目の画面のクラスをCPropertyPageの派生クラスで作成し、
> それを複数宣言してCPropertySheetに加えてあげるだけで
> できると思います。
↑の解釈を以下のように思ってしまったのは間違いでしょうか?
1.CPropertyPageから派生させた「CpTestBase」を作成して、共通の入力項目10個を設定。
2.CpTestBaseから派生させた「CpPage1」を作成して、その画面のみの入力項目を設定。
3.上記2と同様に、他のページ「CpPage2」~「CpPage5」を作成。
4.各画面を作成したら最後に「CpPage1」~「CpPage5」をCPropertySheetにAddする。
当たり前の事ながら、共通の入力項目は「CpTestBase」にしかない訳で、派生した方は変数の
参照のみ可能ってことになりますよね。
結局のところ、「CpPage1」~「CpPage5」にも共通の入力項目を設けて、OnInitDialogで
「CpTestBase」から値を参照するしかないのでしょうか?
あと何気に思ったのは、共通の入力項目は変数のみクラスに用意しておき、普通に
CPropertyPageから派生して各画面を作り、外部クラスの参照で共通の入力項目の変数を読み書
きするのが妥当のような気がしましたが、それはそれで間違いでしょうか?
えっと、とりあえず前回はコチラです。
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200508/05080011.txt
ちょっとよくないコードですがご容赦を。
・・・
//CMyPropertySheetはCPropertySheetの派生クラス。
CMyPropertySheet Sheet(WIZARD!);
//ウィザードモード
Sheet.SetWizardMode();
//ウィザードのページのクラス。CPropertyPageの派生クラス。
CpTestBase WizardPage[5];
for(int nIndex = 0 ; nIndex < 5 ; nIndex++)
{
//シートにページを追加
Sheet.AddPage(&WizardPage[nIndex]);
}
Sheet.DoModal();
・・・
ではダメってことですか?
う~ん、丁寧に書いて頂いた部分は分かっていまして、知りたい内容は、
> //ウィザードのページのクラス。CPropertyPageの派生クラス。
> CpTestBase WizardPage[5];
この「WizardPage」自体の入力項目の共通化をしたいのです。
イメージが伝わるか分かりませんが・・・
[Page1]
担当者(苗字) ______ (名前)______
ふりがな(苗字)______ (名前)______
生年月日 ______
資格1 ____ 取得年 ____
資格2 ____ 取得年 ____
資格3 ____ 取得年 ____
[Page2]
担当者(苗字) ______ (名前)______
ふりがな(苗字)______ (名前)______
生年月日 ______
学歴(小学校) ____
学歴(中学校) ____
学歴(高校) ____
学歴(大学) ____
[Page3]
担当者(苗字) ______ (名前)______
ふりがな(苗字)______ (名前)______
生年月日 ______
趣味 ____ 特技 ____
というような感じで各ページで同じ情報を表示・変更できるようにする方法があったら知りたい
と思いまして質問しました。
言語は違いますが、C++の要素を持つDelphiでは作ったことありますが、純粋なC++ではどう作
るか分からなくて・・・。
「担当者~生年月日」のところが同じだから共通化したいということでしょうか。
でしたら、この共通部分だけをもつダイアログを作り、
これを1個のコントロールとみて、各ページに埋め込むというのはいかがでしょう。
共通項目を持ったダイアログの中にモードレスプロパティシートを埋め込むとか。
この場合、共通項目はページ(タブで囲まれた領域)の外になります。
共通項目なのだから通常はページの外でも不自然ではないと思いますが...
ページの中に、というなら dairygoods さんの方法かな。
#確か、モードレスにすると[OK]/[キャンセル]/[適用]などのボタンは自動的に
#無くなるので、これらも親のダイアログに作っておく必要があったと思います。
なんとなく見通しが立てられそうなので、書き込みの内容を基にいろいろ試してみます。
ご意見ありがとうございました。
>#確か、モードレスにすると[OK]/[キャンセル]/[適用]などのボタンは自動的に
>#無くなるので、これらも親のダイアログに作っておく必要があったと思います。
これはプロパティシートの場合で、Wizard にした場合はモードレスでも既定のボタンは
無くならなかったはずです。
すいません。質問をよく読んでいませんでした。