ウィンドウに配置した入力項目の保存と再現

投稿者:KNIGHT 投稿日:2024/02/22(Thu) 10:22:49 No.2929

こんにちは、お世話になります。
ウィンドウ配置した入力項目、選択項目、ラジオボタンのオンオフ、チェックボックスのチェックの有無などのデータの保存と再現(読み出し)を、簡便に行うにはどうすればよいでしょうか? 以前 TTSneo でプログラムした時は、csv で保存したりしたのですが、XMLや JSON形式を使用するのが今風なのでしょうか・・。

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

Re: ウィンドウに配置した入力項目の保存と再現

投稿者:KNIGHT 投稿日:2024/02/22(Thu) 14:11:42 No.2930

自分なりの解決手段としては、
設定値を、保存時には「プロデルのプログラム形式で出力」しておき、復元時は、「そのプログラムを実行する」という形をとってみました。

どなたか、自分なりの定石があれば、ご教授ください。
よろしくお願いいたします。

<プログラム例>

メイン画面を表示する
待機する
メイン画面とは
  ウィンドウを継承する
  はじめの手順
    初期化する
    ーー貼り付けた部品に対する操作をここに書きます
  終わり
  初期化する手順
    ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
    初期化開始する
    この実質大きさを{316,354}に変える
    この内容を「メイン画面」に変える
    この文字色を「標準の文字」に変える
    ボタン2というボタンを作る
      その位置と大きさを{201,75,72,26}に変える
      その内容を「復元」に変える
      その移動順を12に変える
      その文字色を「標準の文字」に変える
    ボタン1というボタンを作る
      その位置と大きさを{202,37,72,26}に変える
      その内容を「保存」に変える
      その移動順を11に変える
      その文字色を「標準の文字」に変える
    ラベル3というラベルを作る
      その位置と大きさを{111,101,66,14}に変える
      その内容を「趣味」に変える
      その移動順を9に変える
      その文字色を「標準の文字」に変える
    チェックボックス2というチェックボックスを作る
      その位置と大きさを{17,310,104,17}に変える
      その内容を「映画が好き」に変える
      その移動順を8に変える
      その文字色を「標準の文字」に変える
    チェックボックス1というチェックボックスを作る
      その位置と大きさを{17,270,118,21}に変える
      その内容を「ドラマが好き」に変える
      その移動順を7に変える
      その文字色を「標準の文字」に変える
    ラベル2というラベルを作る
      その位置と大きさを{12,63,42,18}に変える
      その内容を「出身県」に変える
      その移動順を6に変える
      その文字色を「標準の文字」に変える
    ラベル1というラベルを作る
      その位置と大きさを{11,24,59,19}に変える
      その内容を「名前」に変える
      その移動順を5に変える
      その文字色を「標準の文字」に変える
    オプション2というオプションを作る
      その位置と大きさを{17,136,70,26}に変える
      その内容を「独身」に変える
      その移動順を4に変える
      そのフォーカス移動可能を○に変える
      その文字色を「標準の文字」に変える
    オプション1というオプションを作る
      その位置と大きさを{17,101,70,19}に変える
      その内容を「既婚」に変える
      その移動順を3に変える
      そのフォーカス移動可能を○に変える
      その文字色を「標準の文字」に変える
    テキスト領域1というテキスト領域を作る
      その位置と大きさを{111,118,179,134}に変える
      その移動順を2に変える
    テキスト2というテキストを作る
      その位置と大きさを{70,62,93,19}に変える
      その移動順を1に変える
    テキスト1というテキストを作る
      その位置と大きさを{70,24,93,19}に変える
      その移動順を10に変える
    初期化終了する
  終わり

ーー[保存]ボタンをクリックした時
  ボタン1がクリックされた時の手順
  ーープロデルで実行可能なプログラムとしてデータを書き出す
   設定値は、「テキスト1の内容は、[「][テキスト1の内容][」][改行]
  テキスト2の内容は、[「][テキスト2の内容][」][改行]
  オプション1の状態は、[「][オプション1の状態][」][改行]
  オプション2の状態は、[「][オプション2の状態][」][改行]
  チェックボックス1の状態は、[「][チェックボックス1の状態][」][改行]
  チェックボックス2の状態は、[「][チェックボックス2の状態][」][改行]
  テキスト領域1の内容は、[「][テキスト領域1の内容][」][改行]」


  「[デスクトップ]設定値.dat」に設定値を保存する  
  終わり

ーー[読み出し]ボタンをクリックし時
  ボタン2がクリックされた時の手順
  ーープログラムをロードして実行する
  設定値復元は「[デスクトップ]設定値.dat」から読み込んだもの
  設定値復元をプロデる
  終わり
終わり

Re^2: ウィンドウに配置した入力項目の保存と再現

投稿者:ゆうと <yutopia あっとまーくutopiat.net> 投稿日:2024/02/24(Sat) 00:33:11 No.2942

こんにちは。

今どきという点であれば、JSON形式がよいと思います。
https://produ.irelang.jp/docs/data/json.htm

JSON形式は、配列や辞書をテキスト化したり、その逆が容易ですので、TTSneoの頃のCSVファイルの扱いに感覚的に近いと思います。

また、TTSneo流でいけば「設定」関数・「設定」手順に相当する
「設定ファイル」種類があります。
https://produ.irelang.jp/docs/file/inifile.htm

「プロデる」は、データを書き換えると
任意のコードを実行できてしまうというセキュリティ上の問題があるので公開するようなソフトウェアではお勧めできません。
(個人で使う分にはよいと思いますが)

Re^3: ウィンドウに配置した入力項目の保存と再現

投稿者:KNIGHT 投稿日:2024/02/24(Sat) 08:19:32 No.2946

おはようございます。お返事をありがとうございます。
> 今どきという点であれば、JSON形式がよいと思います。
> https://produ.irelang.jp/docs/data/json.htm

> また、TTSneo流でいけば「設定」関数・「設定」手順に相当する
> 「設定ファイル」種類があります。
> https://produ.irelang.jp/docs/file/inifile.htm

いろいろと試してみたいと思います。ありがとうございました。

Re^4: ウィンドウに配置した入力項目の保存と再現

投稿者:KNIGHT 投稿日:2024/02/24(Sat) 11:54:30 No.2948

こんにちは

結局のところ、ウィンドウ(タブページ)内に配置した保存したい入力項目というのは、テキスト、テキスト領域、オプション、チェックボックスの4種類だけなので、とりあえずは、「タブページ1の子部品一覧を部品へそれぞれ繰り返す」と「プロデる」の組み合わせで、うまく保存と再現、クリアができるようになりました。

JSON形式で保存するには、「改行」を含むテキスト領域の内容については、「改行」を「\n」に置き換えて保存し、再現時に元に戻せばよいのでしょうか?

〜〜〜〜
メイン画面を表示する
待機する
メイン画面とは
  ウィンドウを継承する
  はじめの手順
    初期化する
    ーー貼り付けた部品に対する操作をここに書きます
  終わり
  初期化する手順
    ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
    初期化開始する
    この実質大きさを{485,424}に変える
    この内容を「メイン画面」に変える
    この文字色を「標準の文字」に変える
    タブフレーム1というタブフレームを作る
      その位置と大きさを{9,13,331,409}に変える
      その見出しサイズを{65,18}に変える
      その移動順を19に変える
      その文字色を「標準の文字」に変える
      タブページ1というタブページをタブフレーム1へ作る
        その位置と大きさを{4,22,323,383}に変える
        その内容を「タブページ1」に変える
        その文字色を「標準の文字」に変える
        その背景色を「透明」に変える
        その余白を{3}に変える
        チェックボックス2というチェックボックスをタブページ1へ作る
          その位置と大きさを{24,198,104,17}に変える
          その内容を「映画が好き」に変える
          その移動順を8に変える
          その文字色を「標準の文字」に変える
          その背景色を「透明」に変える
        チェックボックス7というチェックボックスをタブページ1へ作る
          その位置と大きさを{27,330,99,24}に変える
          その内容を「チェックボックス7」に変える
          その移動順を18に変える
          その文字色を「標準の文字」に変える
          その背景色を「透明」に変える
        テキスト1というテキストをタブページ1へ作る
          その位置と大きさを{77,19,93,19}に変える
          その移動順を10に変える
        チェックボックス6というチェックボックスをタブページ1へ作る
          その位置と大きさを{26,306,100,18}に変える
          その内容を「チェックボックス6」に変える
          その移動順を17に変える
          その文字色を「標準の文字」に変える
          その背景色を「透明」に変える
        テキスト2というテキストをタブページ1へ作る
          その位置と大きさを{77,44,93,19}に変える
          その移動順を1に変える
        チェックボックス5というチェックボックスをタブページ1へ作る
          その位置と大きさを{26,277,100,23}に変える
          その内容を「チェックボックス5」に変える
          その移動順を16に変える
          その文字色を「標準の文字」に変える
          その背景色を「透明」に変える
        テキスト領域1というテキスト領域をタブページ1へ作る
          その位置と大きさを{132,221,179,134}に変える
          その移動順を2に変える
        チェックボックス4というチェックボックスをタブページ1へ作る
          その位置と大きさを{25,247,101,24}に変える
          その内容を「チェックボックス4」に変える
          その移動順を15に変える
          その文字色を「標準の文字」に変える
          その背景色を「透明」に変える
        オプション1というオプションをタブページ1へ作る
          その位置と大きさを{24,69,70,19}に変える
          その内容を「既婚」に変える
          その移動順を3に変える
          そのフォーカス移動可能を○に変える
          その文字色を「標準の文字」に変える
          その背景色を「透明」に変える
        チェックボックス3というチェックボックスをタブページ1へ作る
          その位置と大きさを{24,222,83,19}に変える
          その内容を「スポーツ好き」に変える
          その移動順を14に変える
          その文字色を「標準の文字」に変える
          その背景色を「透明」に変える
        オプション2というオプションをタブページ1へ作る
          その位置と大きさを{24,94,70,26}に変える
          その内容を「独身」に変える
          その移動順を4に変える
          そのフォーカス移動可能を○に変える
          その文字色を「標準の文字」に変える
          その背景色を「透明」に変える
        ラベル1というラベルをタブページ1へ作る
          その位置と大きさを{12,22,59,19}に変える
          その内容を「名前」に変える
          その移動順を5に変える
          その文字色を「標準の文字」に変える
          その背景色を「透明」に変える
        ラベル2というラベルをタブページ1へ作る
          その位置と大きさを{12,47,42,18}に変える
          その内容を「出身県」に変える
          その移動順を6に変える
          その文字色を「標準の文字」に変える
          その背景色を「透明」に変える
        チェックボックス1というチェックボックスをタブページ1へ作る
          その位置と大きさを{24,171,118,21}に変える
          その内容を「ドラマが好き」に変える
          その移動順を7に変える
          その文字色を「標準の文字」に変える
          その背景色を「透明」に変える
        ラベル3というラベルをタブページ1へ作る
          その位置と大きさを{132,195,66,14}に変える
          その内容を「趣味」に変える
          その移動順を9に変える
          その文字色を「標準の文字」に変える
          その背景色を「透明」に変える
      タブページ2というタブページをタブフレーム1へ作る
        その位置と大きさを{4,22,323,383}に変える
        その内容を「タブページ2」に変える
        その移動順を1に変える
        その文字色を「標準の文字」に変える
        その背景色を「透明」に変える
        その余白を{3}に変える
    ボタン3というボタンを作る
      その位置と大きさを{377,310,67,25}に変える
      その内容を「クリア」に変える
      その移動順を13に変える
      その文字色を「標準の文字」に変える
    ボタン2というボタンを作る
      その位置と大きさを{377,381,72,26}に変える
      その内容を「復元」に変える
      その移動順を12に変える
      その文字色を「標準の文字」に変える
    ボタン1というボタンを作る
      その位置と大きさを{377,349,72,26}に変える
      その内容を「保存」に変える
      その移動順を11に変える
      その文字色を「標準の文字」に変える
    初期化終了する
    タブフレーム1の一覧を{「タブページ1」,「タブページ2」}に変える
  終わり

ーー[保存]ボタンをクリックした時
  ボタン1がクリックされた時の手順
  設定値は「」
  タブページ1の子部品一覧を部品へそれぞれ繰り返す
    もし 部品が「テキスト」を含むなら 設定値は、設定値&「[部品の名前]の内容は、[「][部品の内容][」][改行]」
    もし 部品が「チェックボックス」を含むなら 設定値は、設定値&「[部品の名前]の状態は、[「][部品の状態][」][改行]」
    もし 部品が「オプション」を含むなら 設定値は、設定値&「[部品の名前]の状態は、[「][部品の状態][」][改行]」
  そして
  「[プログラムの位置]タブ1設定値.dat」に設定値を保存する  
  終わり

ーー[読み出し]ボタンをクリックし時
  ボタン2がクリックされた時の手順
  ーープログラムをロードして実行する
  設定値復元は「[プログラムの位置]タブ1設定値.dat」から読み込んだもの
  設定値復元をプロデる
  終わり
  
ーー[クリア]ボタンをクリックし時
  ボタン3がクリックされた時の手順
  タブページ1の子部品一覧を部品へそれぞれ繰り返す
    もし 部品が「テキスト」を含むなら 部品の内容は「」
    もし 部品が「チェックボックス」を含むなら部品の状態は「なし」      
    もし 部品が「オプション」を含むなら部品の状態は「×」      
  そして
    終わり
終わり
〜〜〜〜

▲ページの先頭へ

- WebForum -