子ウィンドウでの表示

投稿者:アーク <info_nds-labo あっとまーくexcite.co.jp> 投稿日:2018/03/30(Fri) 11:45:08 No.2052

ゆうとさん、こんにちは。アークです。

いつもお世話になります。

リファレンス等を探したのですが見付からなかったので質問させて頂きます。
子ウィンドウにrdrフィルを表示させる事は可能でしょうか?
親からrdrフィルを参照して実行する事はできましたが、
子ウィンドウとして表示させる方法が分かりませんでした。

よろしくお願いいたします。

MDIウィンドウでしょうか?

投稿者:ゆうと 投稿日:2018/04/30(Mon) 00:32:29 No.2069

アークさん、こんばんは ゆうとです。

おそらくMDIウィンドウの事かと思います。
サンプルがありますので、参考にしてください。

場所:サンプル\ウィンドウ部品\MDIウィンドウ.rdr

それでは

MDIウィンドウではなく…

投稿者:アーク <info_nds-labo あっとまーくexcite.co.jp> 投稿日:2018/04/30(Mon) 18:36:26 No.2071

ゆうとさん、こんばんは。アークです。

回答ありがとうございます。

今回の質問はMDI形式のアプリケーションを作るという事では無く、
それぞれ別々に作成したアプリケーションを一つのアプリケーションで管理したいのです。
丁度MDIアプリケーションの様に一つのウィンドウ内に多ウィンドウを表示させて、
その起動や終了などの管理をしたいと考えています。
何か方法が有りますでしょうか。

MDIウィンドウ+ライブラリ

投稿者:アーク <info_nds-labo あっとまーくexcite.co.jp> 投稿日:2018/06/26(Tue) 10:11:10 No.2128

ゆうとさん、こんにちは。アークです。

あれから試行錯誤しているのですが、
遣りたい事はMDIウィンドウ+ライブラリの組み合わせが近いようです。
そこで質問なのですがMDIウィンドウ内に描画する時に、
それを外部ファイルの手順で行う事は可能でしょうか。

宜しくお願い致します。

補足です

投稿者:アーク <info_nds-labo あっとまーくexcite.co.jp> 投稿日:2018/06/28(Thu) 15:20:48 No.2137

ゆうとさん、こんにちは。アークです。

質問内容が分かり易いように努めているのですが、
的確に伝えるのは難しいものですね。

遣りたい事はMDIウィンドウの一つとして作ったものを別ファイルに分離して、
それを読み込んだ時に元のMDIウィンドウの様に表示したいのです。
別のrdrファイルに分けて参照設定で読み込むとMDIウィンドウにならいないので、
この方法では無理なのでしょうか。

よろしくお願いいたします。

モックアップが欲しいです

投稿者:ゆうと 投稿日:2018/06/30(Sat) 17:37:43 No.2138

こんにちは ゆうとです。

文字だけの説明では、なかなか伝わらない/伝えづらいところがあります。
動かなくても構わないので、「こういうプログラムが作りたい」という作成途中・試行錯誤したプログラム(モックアップ)を見せてもらえないでしょうか。

返答する側が、参考にするものなく、ゼロからひな形プログラムを作るのは、つらいです。
できるかどうかは別として、質問する側が積極的にプログラムを出して頂く方が、イメージも伝わりやすく、返事も書きやすいと思います。

宜しくお願いします。

長いですが…

投稿者:アーク <info_nds-labo あっとまーくexcite.co.jp> 投稿日:2018/06/30(Sat) 20:00:15 No.2139

ゆうとさん、こんばんは。アークです。

分かり難くて申し訳ありません。

作りたいのはDOS時代のPIMです。
時計やカレンダ、電卓など個々のアイテムはできたのですが、
それをMDIで管理したいと考えています。

長いですがよろしくお願いします。
先ずは親の方からです。
--------------------------------------
// MDIウィンドウ //
「時計ライブラリ.rdr」を参照する

マネージャー画面を表示する
待機する

マネージャー画面とは
  ウィンドウを継承する
  +カウント

はじめの手順
  初期化する
  カウントは、1
  マネージャーを表示する
  //マネージャー画面の内部領域大きさを表示する
終わり

初期化する手順
  //自動生成された手順です。ここにプログラムを書き加えても消える場合があります
  この内部領域大きさを{266,517}に変える
  この種類を「縁無し」に変える
  この初期位置を「手動」に変える
  このMDIコンテナを○に変える
  この内容を「Manager」に変える
  このドラッグドロップを○に変える
  メニュー1というメニューを作る
    その位置と大きさを{0,0,266,24}に変える
    その内容を「メニュー1」に変える
    その移動順を1に変える
    ファイルメニュー項目というメニュー項目をメニュー1へ追加する
      その表示を○に変える
      その内容を「ファイル(&F)」に変える
      新規メニュー項目というメニュー項目をメニュー1のファイルメニュー項目へ追加する
        その内容を「新規(&N)」に変える
      区切りという区切り線部品をメニュー1のファイルメニュー項目へ追加
        その大きさを{116,6}に変える
      閉じるメニュー項目というメニュー項目をメニュー1のファイルメニュー項目へ追加する
        その内容を「閉じる(&C)」に変える
    ウィンドウメニュー項目というメニュー項目をメニュー1へ追加する
      その表示を○に変える
      その内容を「ウィンドウ(&W)」に変える
終わり

マネージャーを表示する時の手順
  メインディスプレイは、画面の1番目を取得したもの
  画面全体は、{メインディスプレイの幅,メインディスプレイの高さ}
  有効領域は、メインディスプレイの作業領域
  X=画面全体(1)-258
  Y=0
  W=264
  //H=有効領域(4)
  H=画面全体(2)-30
  マネージャー画面の位置と大きさを{X,Y,W,H}に変える
  マネージャー画面の内部領域大きさを{248,1020}に変える
  //{X,Y,W,H}を表示する
  //マネージャー画面の内部領域大きさを表示する
終わり

新規メニュー項目がクリックされた時の手順
  子ウィンドウを増やす
  //子ウィンドウを作って子とする
  //子のMDI親ウィンドウは、マネージャー画面
終わり

閉じるメニュー項目がクリックされた時の手順
  終了する
終わり

【自分】で、子ウィンドウを、増やす手順
  子ウィンドウを作って子とする
  対象は、それ
  子のMDI親ウィンドウは、マネージャー画面
  子の名前は、「子ウィンドウ[カウント]」
  子の名前は、「アナログ時計」
  子の内容は、「時計」
  子を表示する
  カウントを増やす
  アナログ時計を表示する

  //メニューを更新する
終わり

  //メニューを、更新する手順
  //  ウィンドウメニュー項目をすべて消す
  //  MDI子ウィンドウ一覧のすべての要素についてそれぞれ繰り返す
  //    メニュー項目をメニュー1のウィンドウメニュー項目へ追加する
  //      その内容を要素の内容に変える
  //      そのクリックされた時の手順は、ウィンドウ選択
  //  繰り返し終わり
  //終わり

  ウィンドウ選択の手順
    MDI子ウィンドウ一覧のすべての要素についてそれぞれ繰り返す
      もし要素の内容が発生元の内容なら
        要素を選択する
        繰り返しから抜ける
      もし終わり
    繰り返し終わり
  終わり
終わり

子ウィンドウとは
  ウィンドウを継承する

  はじめの手順
    初期化する
  終わり

  初期化する手順
    //自動生成された手順です。ここにプログラムを書き加えても消える場合があります
    この内部領域大きさを{228,219}に変える
    この初期位置を「手動」に変える
    この内容を「子ウィンドウ」に変える
    このドラッグドロップを○に変える
    
  終わり
終わり
--------------------------------------
次に子の方です。
--------------------------------------
素材として「Model-3.png」を利用する
//アナログ時計を表示する
//待機する

アナログ時計とは
  ウィンドウを継承する
  はじめの手順
    //設定ファイルを読み込む
    //位置Xを表示する
    //位置Yを表示する
    //秒表示を表示する
    初期化する
    //貼り付けた部品に対する操作をここに書きます
    タイマー1というタイマーを作る
    現在の時刻を取得する
    もし秒表示が「はい」ならば
      タイマー1の時間になった時の手順は、時を刻む
      タイマー1の間隔を990に変える
      針を動かす
      タイマー1を開始する
    そうでなければ
      タイマー2というタイマーを作る
      タイマー2の間隔を[(60-現在秒)*1000]に変える
      タイマー2の時間になった時の手順は、時間が来た
      針を動かす
      タイマー2を開始する
    もし終わり
  終わり
  
  初期化する手順
  //自動生成された手順です。ここにプログラムを書き加えても消える場合があります
  このMDIコンテナを○に変える
  この内容を「アナログ時計」に変える
  キャンバス1というキャンバスを作る
    その位置と大きさを{0,0,248,248}に変える
    その背景画像を「M:\MyAppData\Produire\MyProjects\Gadget Manager\Model-3.png」に変える
    その位置固定方向を「右+左+下+上」に変える
終わり

  設定ファイルを読み込む時の手順
    初期化ファイルという設定ファイルを作る
    初期化ファイルのファイル名は、「MyClock.ini」
    初期化ファイルについて「窓」から「座標X」を取得して位置Xとする
    初期化ファイルについて「窓」から「座標Y」を取得して位置Yとする
    初期化ファイルについて「窓」から「透明度」を「70」で取得して窓透明度とする
    初期化ファイルについて「窓」から「窓枠」を取得して枠種類とする
    初期化ファイルについて「窓」から「スキン」を「Model-1.png」で取得して外観とする
    初期化ファイルについて「時計」から「時針の長さ」を取得して短針長とする
    初期化ファイルについて「時計」から「時針の太さ」を取得して短針幅とする
    初期化ファイルについて「時計」から「時針の形状」を取得して短針形とする
    初期化ファイルについて「時計」から「時針の色」を取得して短針色とする
    初期化ファイルについて「時計」から「分針の長さ」を取得して長針長とする
    初期化ファイルについて「時計」から「分針の太さ」を取得して長針幅とする
    初期化ファイルについて「時計」から「分針の形状」を取得して長針形とする
    初期化ファイルについて「時計」から「分針の色」を取得して長針色とする
    初期化ファイルについて「時計」から「秒針の表示」を取得して秒表示とする
    初期化ファイルについて「時計」から「秒針の中心」を取得して秒中心とする
    初期化ファイルについて「時計」から「秒針の長さ」を取得して秒針長とする
    初期化ファイルについて「時計」から「秒針の太さ」を取得して秒針幅とする
    初期化ファイルについて「時計」から「秒針の色」を取得して秒針色とする
    秒中心を「,」で区切って秒針位置とする
    //位置Xを表示する
    //位置Yを表示する
  終わり

  文字盤を表示する時の手順
    //MDI親ウィンドウは、マネージャー画面
    //MDI親ウィンドウの内容を表示する
    //一覧は、MDI親ウィンドウの子ウィンドウを列挙したもの
    //一覧を表示する
    キャンバス1というキャンバスを作る
      その位置と大きさを{0,0,248,248}に変える
      その位置固定方向を「右+左+下+上」に変える
      その背景画像を「[文字盤]」に変える
  終わり

  時間が来た手順
    タイマー2を停止する
    針を動かす
    タイマー1の時間になった時の手順は、針を動かす
    タイマー1の間隔を[60*1000]に変える
    タイマー1を開始する
  終わり
  
  時を刻む時の手順
    現在の時刻を取得する
    0.5秒待つ
    もしSX=0でなければ
      秒針を消す
      キャンバス1を更新する
    もし終わり
    秒針角は、[現在秒*6-90+6]
    SX=([秒針角]度のコサイン)*秒針長
    SY=([秒針角]度のサイン)*秒針長
    キャンバス1へ線を描いて秒針とする
    秒針の位置と大きさは、{秒針位置(1),秒針位置(2),SX,SY}
    秒針の始点形状は、「[丸形]」
    秒針の線色を「[秒針色]」に変える
    秒針の太さを「[秒針幅]」に変える
    キャンバス1を更新する
    もし現在秒が「0」ならば
      針を動かす
    もし終わり
  終わり
  
  針を動かす時の手順
    現在の時刻を取得する
    もしHX=0でなければ
      時針を消す
      分針を消す
      //キャンバス1を更新する
    もし終わり
    時針角は、[(現在時を12で割った剰り*30)+(現在分/2)-90]
    分針角は、[現在分*6-90]
    HX=([時針角]度のコサイン)*短針長
    HY=([時針角]度のサイン)*短針長
    MX=([分針角]度のコサイン)*長針長
    MY=([分針角]度のサイン)*長針長
    キャンバス1へ線を描いて時針とする
    時針の位置と大きさは、{124,124,HX,HY}
    時針の線色を「[短針色]」に変える
    時針の太さを7に変える
    時針の始点形状は、「[丸形]」
    時針の終点形状は、「標準」
    キャンバス1へ線を描いて分針とする
    分針の位置と大きさは、{124,124,MX,MY}
    分針の線色を「[長針色]」に変える
    分針の太さを「5」に変える
    分針の終点形状は、「標準」
    キャンバス1を更新する
  終わり

  現在の時刻を取得する時の手順
    現在時刻は、今の時刻
    時刻配列は、現在時刻を「:」で区切ったもの
    現在時は、時刻配列(1)の整数
    現在分は、時刻配列(2)の整数
    現在秒は、時刻配列(3)の整数
  終わり

  キャンバス1がダブルクリックされた時の手順
    タイマー1を停止する
    自分を閉じる
  終わり
  
  デザインを変更した時の手順
    設定ファイルを読み込む
    もし「[外観]」が「」ならば
      文字盤は、素材リストから「Model-3.png」を画像として取得したもの
      文字盤は、「[外観]」
    もし終わり
    もし「[外観]」が存在しないならば
      文字盤は、素材リストから「Model-3.png」を画像として取得したもの
    そうでなければ
    もし終わり
    キャンバス1の背景画像を文字盤に変える
    もし秒表示が「はい」なら
      時を刻む
    そうでなければ
      針を動かす
    もし終わり
  終わり
  
終わり
--------------------------------------
子のアナログ時計は単体で動いている物から変更しています。

ところで、先日のファイラーはそちらで正常に動きましたでしょうか?

よろしくお願い致します。

Re: 長いですが…

投稿者:通りすがり 投稿日:2018/07/02(Mon) 20:42:50 No.2142

MDIの子ウィンドウを作るはずのところが、変な風に二重にあるようです。
実際には、参照される側のプログラムが、元のプログラムの手続きを呼び出して、自身を登録するようなつくりになるのではと思いますが、ひとまずは、動くかどうかの部分だけ。

> 【自分】で、子ウィンドウを、増やす手順
>   子ウィンドウを作って子とする
→「子ウィンドウ」のインスタンスではなく、「アナログ時計」のインスタンスを作成するのではないでしょうか。(種類「子ウィンドウ」の定義は不要)

>   対象は、それ
>   子のMDI親ウィンドウは、マネージャー画面
>   子の名前は、「子ウィンドウ[カウント]」
>   子の名前は、「アナログ時計」
>   子の内容は、「時計」
>   子を表示する
>   カウントを増やす
>   アナログ時計を表示する
子が、アナログ時計のインスタンスになるので、「アナログ時を表示」は不要になります(子を表示する で表示されるため)


> --------------------------------------
> 次に子の方です。
> --------------------------------------

>   //自動生成された手順です。ここにプログラムを書き加えても消える場合があります
>   このMDIコンテナを○に変える
MDIコンテナではないので、この行は削除。
MDIコンテナは、MDIの親のことです。

ありがとうございます

投稿者:アーク <info_nds-labo あっとまーくexcite.co.jp> 投稿日:2018/07/02(Mon) 22:30:23 No.2144

通りすがりさん、こんばんは。アークです。

ご教示頂いたヒントのお蔭で子ウィンドウとして表示させる事ができました。
先ずは第一関門突破と言う処ですができそうな気がして来ました。
ありがとうございました。

実行ファイルにするとエラーが…

投稿者:アーク <info_nds-labo あっとまーくexcite.co.jp> 投稿日:2018/07/06(Fri) 16:15:43 No.2145

通りすがりさん、こんばんは。アークです。

お世話になっています。

お陰様で外部プロデルファイルを読み込んでMDIの子ウィンドウに表示させる事はできましたが、
親の方のプロデルファイルを実行ファイルに変換すると動かなくなります。
例えば時計の方は設定ファイルを使っているのですが、
『「設定ファイル」という種類は定義されていません。種類名に誤りが無いか、
プラグインが利用できる状態か確認してください。』とエラー表示されます。
カレンダでは表部品が同じようにエラーになってしまいます。
これを回避するにはどのようにすれば宜しいでしょうか。

自己解決しました

投稿者:アーク <info_nds-labo あっとまーくexcite.co.jp> 投稿日:2018/07/06(Fri) 17:32:58 No.2146

そのプロデルファイルが使用しているであろうプラグインを探して、
同じフォルダにコピーしたところ起動するようになりました。

普段、実行ファイルにする時はチェックしなくてもプラグインが同梱されても、
rdrファイルのまま使う時は手作業で同梱させないと駄目なようですね。
一つ勉強になりました。
どうもお騒がせしました。

P.S. 他にもっと良い方法が有るのかな…

付属品が洩れました

投稿者:アーク <info_nds-labo あっとまーくexcite.co.jp> 投稿日:2018/06/30(Sat) 21:43:24 No.2140

これも必要でした。
画像以外は添付できないようですので、
Model-3.pngはダミーの画像で代用して下さい。
サイズは248×248ピクセルで文字盤の画像です。

MyClock.ini
-----------------------------------------
[窓]
座標X=80
座標Y=80
窓枠=ダイアログ
透明度=80
スキン=
[時計]
時針の長さ=60
時針の太さ=7
時針の形状=標準
時針の色=黒
分針の長さ=70
分針の太さ=5
分針の形状=標準
分針の色=黒
秒針の表示=はい
秒針の中心=124,124
秒針の長さ=80
秒針の太さ=1
秒針の色=黒
-----------------------------------------

再送します

投稿者:アーク <info_nds-labo あっとまーくexcite.co.jp> 投稿日:2018/06/30(Sat) 23:46:07 No.2141

何度も済みません。

画像を添付してもプレビュー画像になってしまうので諦めていたのですが、
画像だけを表示させると原画を取り出せる事が分かったので現物を送ります。

▲ページの先頭へ

- WebForum -