[ Siena 目次 ]

テキストボックスの初期化のサンプル

テキストボックスを初期化するサンプルを試作します。
備忘録アプリの試作で実践した方法を、ここで再掲します。


実際の画面を確認

テキストボックスの初期化に限定して、単純なサンプルで仕組みを確認します。
作成したのは、メインとなる1画面のみです。
スクリーン1
左にギャラリー、右にテキストボックスと登録用のボタンを配置しました。
スクリーン2
テキストボックスに値を入力しました。次に、登録ボタンを押します。
スクリーン3
登録ボタン押下後です。コレクションに入力値を登録すると同時に、テキストボックスが初期化されています。この振る舞いが、今回の胆です。


以下に、作成時のポイントを記述します。

[ 目次 ]
  1. 実際の画面を確認
  2. ポイント
  3. 仕様確認
  4. 仕組みの解説



ポイント

ポイントを簡単にまとめておきます。

  1. テキストボックスの Default 属性に、その項目用のストリング変数(今回は StringInput 変数)を指定します。
  2. 初期化したいタイミング(登録ボタン押下後など)で、そのストリング変数に "" (空白) を転送します。 UpdateContext({StringInput:""}) といった具合です。
  3. タイトルボックスの入力値をストリング変数に保存したいときは、
    OnChange 属性に、 UpdateContext({StringInput:InputText!Text})
    と処理を指定し、値が変更されたときに転送処理を行います。
    これにより、ストリング変数に入力値が入ります。

検索・照会画面のサンプルの時はブーリアン変数を使用したのですが、 そこにも書いてある通り、明らかに場つなぎ的方法になってしまいました。
ですので、今回紹介するやり方をお勧めします。



仕様確認

  1. 登録ボタンが押されたら、テキストボックスの入力値を、コレクションに登録します。
  2. 登録と同時に、テキストボックスを初期化します。
  3. ギャラリーには、登録されたコレクションの内容を表示します。



仕組みの解説

ここでは、貼り付けた部品の属性を ExpressView で確認します。
部品を選んで右下の ExpressView ボタンをクリックすれば、画面右に開きます。
以下、画像をクリックすると拡大画面が表示されます。

  1. テキストボックス
  2. このテキストボックス用のストリング変数を、デフォルトに指定します。
    Default 属性で、 StringInput と指定している部分がそれです。

    値が変更されたときに、入力値をストリング変数に転送します。
    OnChange 属性で、 UpdateContext({StringInput:InputText!Text})
    と指定している部分がそれです。
    テキストボックス1

  3. 登録ボタン
  4. 入力された値をコレクションに登録します。
    OnSelect 属性で、
    If(StringInput<>"", Collect(WorkTBL,{Name:StringInput}));UpdateContext({StringInput:""})
    と指定している部分がそれです。

    StringInput の代わりに InputText!Text と指定することもできそうですが、 UpdateContext 文でそのコーディングをするとエラーになります。 ですので、わざわざストリング変数を使用し、入力値もその変数に転送することで、処理をわかりやすくしています。
    登録ボタン1

  5. ギャラリー
  6. 登録された入力値を表示します。
    Items 属性で、 WorkTBL と指定している部分がそれです。
    ギャラリー1

  7. スクリーン
  8. スクリーンが表示されるときに、ストリング変数を初期化しています。
    OnVisible 属性で、 UpdateContext({StringInput:""})
    と指定している部分がそれです。

    この処理を入れておかないと、初期表示時に入力をしないで登録ボタンを押したとき、入力値がないはずなのに空白がコレクションに登録されてしまいます。
    スクリーン1

    OnVisible はそのスクリーンが表示されるとき、 OnHidden はそのスクリーンが非表示になるとき(他のスクリーンに移るときなど)のイベントタイミングのようです。
    今回は、スクリーンの初期処理をここで指定する、という使い方をしました。 ただ、実際にいろいろ試作をしていると、表示の際に毎度毎度初期化したくないこともあるので、このタイミングに処理を入れるかどうかは、作りたいものによると思います。