(続)ウィザードプロパティについて – プログラミング – Home

(続)ウィザードプロパティについて
 
通知
すべてクリア

[解決済] (続)ウィザードプロパティについて


VC++初心者
 VC++初心者
(@VC 初心者)
ゲスト
結合: 20年前
投稿: 6
Topic starter  

前回の質問を[解決]にして試してみましたが、結局分からないままふりだしに戻ってしまいまし
た。

> 入力項目の画面のクラスをCPropertyPageの派生クラスで作成し、
> それを複数宣言してCPropertySheetに加えてあげるだけで
> できると思います。
↑の解釈を以下のように思ってしまったのは間違いでしょうか?
1.CPropertyPageから派生させた「CpTestBase」を作成して、共通の入力項目10個を設定。
2.CpTestBaseから派生させた「CpPage1」を作成して、その画面のみの入力項目を設定。
3.上記2と同様に、他のページ「CpPage2」~「CpPage5」を作成。
4.各画面を作成したら最後に「CpPage1」~「CpPage5」をCPropertySheetにAddする。

当たり前の事ながら、共通の入力項目は「CpTestBase」にしかない訳で、派生した方は変数の
参照のみ可能ってことになりますよね。
結局のところ、「CpPage1」~「CpPage5」にも共通の入力項目を設けて、OnInitDialogで
「CpTestBase」から値を参照するしかないのでしょうか?

あと何気に思ったのは、共通の入力項目は変数のみクラスに用意しておき、普通に
CPropertyPageから派生して各画面を作り、外部クラスの参照で共通の入力項目の変数を読み書
きするのが妥当のような気がしましたが、それはそれで間違いでしょうか?


引用未解決
トピックタグ
ター坊
 ター坊
(@ター坊)
ゲスト
結合: 21年前
投稿: 9
 

えっと、とりあえず前回はコチラです。
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();
・・・
ではダメってことですか?


返信引用
VC++初心者
 VC++初心者
(@VC 初心者)
ゲスト
結合: 20年前
投稿: 6
Topic starter  

う~ん、丁寧に書いて頂いた部分は分かっていまして、知りたい内容は、
> //ウィザードのページのクラス。CPropertyPageの派生クラス。
> CpTestBase WizardPage[5];
この「WizardPage」自体の入力項目の共通化をしたいのです。

イメージが伝わるか分かりませんが・・・
[Page1]
担当者(苗字) ______ (名前)______
ふりがな(苗字)______ (名前)______
生年月日 ______

 資格1 ____ 取得年 ____
 資格2 ____ 取得年 ____
 資格3 ____ 取得年 ____

[Page2]
担当者(苗字) ______ (名前)______
ふりがな(苗字)______ (名前)______
生年月日 ______

 学歴(小学校) ____
 学歴(中学校) ____
 学歴(高校)  ____
 学歴(大学)  ____

[Page3]
担当者(苗字) ______ (名前)______
ふりがな(苗字)______ (名前)______
生年月日 ______

 趣味 ____  特技 ____

というような感じで各ページで同じ情報を表示・変更できるようにする方法があったら知りたい
と思いまして質問しました。
言語は違いますが、C++の要素を持つDelphiでは作ったことありますが、純粋なC++ではどう作
るか分からなくて・・・。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

「担当者~生年月日」のところが同じだから共通化したいということでしょうか。

でしたら、この共通部分だけをもつダイアログを作り、
これを1個のコントロールとみて、各ページに埋め込むというのはいかがでしょう。


返信引用
zin
 zin
(@zin)
ゲスト
結合: 20年前
投稿: 2
 

共通項目を持ったダイアログの中にモードレスプロパティシートを埋め込むとか。

この場合、共通項目はページ(タブで囲まれた領域)の外になります。
共通項目なのだから通常はページの外でも不自然ではないと思いますが...
ページの中に、というなら dairygoods さんの方法かな。

#確か、モードレスにすると[OK]/[キャンセル]/[適用]などのボタンは自動的に
#無くなるので、これらも親のダイアログに作っておく必要があったと思います。


返信引用
VC++初心者
 VC++初心者
(@VC 初心者)
ゲスト
結合: 20年前
投稿: 6
Topic starter  

なんとなく見通しが立てられそうなので、書き込みの内容を基にいろいろ試してみます。
ご意見ありがとうございました。


返信引用
zin
 zin
(@zin)
ゲスト
結合: 20年前
投稿: 2
 

>#確か、モードレスにすると[OK]/[キャンセル]/[適用]などのボタンは自動的に
>#無くなるので、これらも親のダイアログに作っておく必要があったと思います。

これはプロパティシートの場合で、Wizard にした場合はモードレスでも既定のボタンは
無くならなかったはずです。
すいません。質問をよく読んでいませんでした。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました