ウィンドウに配置した入力項目のクリア

投稿者:KNIGHT 投稿日:2024/02/23(Fri) 21:41:31 No.2938

御世話になります。

ウィンドウ内に配置した項目で、チェックボックスが20項目、テキストが20項目、テキスト領域が5カ所、オプションの2項目が5カ所、選択リストが2カ所・・、ある場合、入力してある項目の内容をすべてクリアしたい時には、ウィンドウ自体を初期化してしまえばよいのでしょうが、タブフレームを設定していて、タブ1の中の入力してある項目の内容だけ、あるいはタブ2だけをクリアしたい時には、どうすればよいのでしょうか?

力ずくで、
チェックボックス11は「」
チェックボックス12は「」
・・・
ーーーーー
テキスト11は「」
テキスト12は「」
・・・
ーーーーー
テキスト領域6は「」
・・・
ーーーーー
オプション5は・・・

と冗長なプログラムを記述するしかないのでしょうか?
「タブ2を入力項目クリアする」
などという記述で、タブ2の入力可能項目だけが、入力以前の状態にできたらいいなになあと思います。
同様に、「タブ2を保存する」とか「タブ2を復元する」、「ウィンドウ1を保存する」とか「ウィンドウ1を復元する」という記述で、入力可能項目だけが保存されたり、復元できたら「すばらしい!!!!」と思います。

自然言語的には、「すばらしい!!!!」というまでもなく、「当たり前」だと思うのは、私が期待しすぎなのでしょうか?

プロデルに期待してTTSneoから離脱したいシロートプログラマーです。

Re: ウィンドウに配置した入力項目のクリア

投稿者:ゆうと <yutopia あっとまーくutopiat.net> 投稿日:2024/02/23(Fri) 23:44:15 No.2940

こんにちは

> タブ1の中の入力してある項目の内容だけ、あるいはタブ2だけをクリアしたい時には、どうすればよいのでしょうか?
> と冗長なプログラムを記述するしかないのでしょうか?

いろいろな考えがあると思います。
部品の個数がさほど多くない場合は、冗長に書いてしまってよいように思います。

プロデルはオブジェクト指向ですので、次のように書いて、
タブページ内の部品を列挙してそれらを繰り返しクリアすることもできます。
-------------
タブページ1の子部品一覧を部品へそれぞれ繰り返す
  部品の内容は「」
そして
-------------

そもそも、プログラムが長くなるほどたくさんのテキスト部品を貼り付ける必要があるのでしょうか。例えば、リストボックスやリストビューといった部品もありますので、たくさんの部品を貼り付けずに済む方法を考えるべきかもしれません。

> 「タブ2を入力項目クリアする」
> などという記述で、タブ2の入力可能項目だけが、入力以前の状態にできたらいいなになあと思います。
> 同様に、「タブ2を保存する」とか「タブ2を復元する」、「ウィンドウ1を保存する」とか「ウィンドウ1を復元する」という記述で、入力可能項目だけが保存されたり、復元できたら「すばらしい!!!!」と思います。

お気持ちはわかりますが、機能を付けたとしても、除外したい部品を指定したい、この場合は文字色やフォント、部品サイズも保存したい、といった色々なオプションが欲しくなってくるものです。
このような要望に対応していると、キリがないので、標準では付けづらい(というよりもご自身で手順を作って工夫して欲しい)というのが基本的な考えです。

ただコメントにつきましては今後の参考にしたいと思います。

-------------
メイン画面を表示する
待機する
メイン画面とは
  ウィンドウを継承する
  はじめの手順
    初期化する
    ーー貼り付けた部品に対する操作をここに書きます
  終わり
  初期化する手順
    ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
    初期化開始する
    この実質大きさを{428,394}に変える
    この内容を「メイン画面」に変える
    この文字色を「標準の文字」に変える
    ボタン1というボタンを作る
      その位置と大きさを{151,321,112,34}に変える
      その内容を「ボタン1」に変える
      その移動順を1に変える
      その文字色を「標準の文字」に変える
    タブフレーム1というタブフレームを作る
      その位置と大きさを{53,29,300,266}に変える
      その見出しサイズを{92,24}に変える
      その移動順を2に変える
      その文字色を「標準の文字」に変える
      タブページ1というタブページをタブフレーム1へ作る
        その位置と大きさを{4,28,292,234}に変える
        その内容を「タブページ1」に変える
        その文字色を「標準の文字」に変える
        その背景色を「透明」に変える
        その余白を{3}に変える
        テキスト3というテキストをタブページ1へ作る
          その位置と大きさを{44,142,150,25}に変える
          その移動順を2に変える
        テキスト2というテキストをタブページ1へ作る
          その位置と大きさを{44,88,150,25}に変える
          その移動順を1に変える
        テキスト1というテキストをタブページ1へ作る
          その位置と大きさを{44,35,150,25}に変える
          その移動順を3に変える
      タブページ2というタブページをタブフレーム1へ作る
        その位置と大きさを{4,28,292,234}に変える
        その内容を「タブページ2」に変える
        その移動順を1に変える
        その文字色を「標準の文字」に変える
        その背景色を「透明」に変える
        その余白を{3}に変える
    初期化終了する
    この設計スケール比率を{144,144}に変える
    タブフレーム1の一覧を{「タブページ1」,「タブページ2」}に変える
  終わり
  ボタン1がクリックされた時の手順
    タブページ1の子部品一覧を部品へそれぞれ繰り返す
      部品の内容は「」
    そして
  終わり
終わり

Re^2: ウィンドウに配置した入力項目のクリア

投稿者:KNIGHT 投稿日:2024/02/24(Sat) 09:26:00 No.2947

ゆうとさま、お返事をありがとうございます。

> 部品の個数がさほど多くない場合は、冗長に書いてしまってよいように思います。
TTSneoで作成した時には力ずくで「冗長に」書いていたのですが、プロデルに移植する際に、もう少しスマートにできないのかなと思っての質問なのです。

> そもそも、プログラムが長くなるほどたくさんのテキスト部品を貼り付ける必要があるのでしょうか。
私が作ろうとしているシステムは、検診業務に相当するような内容なので、とにかく入力項目がたくさん必要なのです。
https://knight1112jp.seesaa.net/article/201201article_21.html?1708732166
TTSneoで作成したプログラム(上記リンク)では、タブ1には、チェックボックス、テキスト、オプションなどの入力項目が、150 個ほどもあるのです。

> プロデルはオブジェクト指向ですので、次のように書いて、
> タブページ内の部品を列挙してそれらを繰り返しクリアすることもできます。
> -------------
> タブページ1の子部品一覧を部品へそれぞれ繰り返す
>   部品の内容は「」
> そして
> -------------
なるほど「子部品一覧」という配列が使用できるのですね。ただ、これだと、ラベルとか、チェックボックスの付帯文字列とかもすべて空白になってしまってまずいのですが、
〜〜〜
タブページ1の子部品一覧を部品へそれぞれ繰り返す
  もし 部品が「テキスト」を含むなら 部品の内容は「」
  もし 部品が「チェックボックス」を含むなら部品の状態は「なし」      
  もし 部品が「オプション」を含むなら部品の状態は「×」      
そして
〜〜〜
初期状態になるように「内容」や「状態」を部品の種類ごとに設定すればよいのですね。これで、だいぶん、「力ずくのコーディング」からスマートになって、全体のプログラムサイズもコンパクトにできそうです。

大いなるヒントをいただきありがとうございました。
今後ともよろしくお願いいたします。

▲ページの先頭へ

- WebForum -