こんにちは、あんこ先生です。
フォームコントロールのカードって扱いが難しいです。
なぜなら、ヘタに触るとエラーが頻発するからです。
一応ロック解除前であれば少しだけ融通ききますが、自由度は低めです。
よくわからずロックを解除すると、詰んでしまうこともありますよね。
でも仕組みを理解していれば、ぜんぜん怖くないんです。
そこで、今回はフォーム初心者を対象に、カード内のコントロールを自由に差し替える方法を紹介します。
もう泣かない!
フォームコントロールって何?という方は先にこちらの記事をオススメします。
Contents
カード内のコントロールを差し替える方法

カード内のコントロールを差し替える方法は2パターンあります。
ひとつはロック解除前に標準機能で切り替える方法です。
これはかんたんかつエラーが発生しないので安心して使えますが、種類は制限されます。
もうひとつはロック解除後に任意でコントロールを追加する方法です。
必ずコードの修正が必要になりますが、自由度は高いです。
事前準備│SharePointリスト

数種類のコントロールを取り扱うために、図のようなリストを作成します。
列名にコントロール名を入れて、データ型もそれに合わせています。
データ型は左から、テキスト・ブール・ブール・日付・選択肢です。
事前準備│Form

作成したリストを基に、フォームを設置します。
フォームのカードで扱うコントロールはデータ型に依存します。
テキスト型ならテキスト入力、ブールならトグルといった具合です。
ロックは解除せず、そのままにしておきます。
ロック解除前にコントロールを変更する

コントロールの種類から変更する
こちらはロック解除前限定で、ロック解除後は選択できなくなります。
やり方はかんたん、変更したいカードとコントロールを選ぶだけです。
コードも自動で書き換えられるため、意識する必要がありません。
なお、~の編集はユーザーが操作可能、~の表示は表示のみで操作できません。
制限事項
コントロールはデータ型に依存しており、選択肢にないコントロールには変更できません。
例えばブール型の場合、トグルかラジオボタンのどちらかしか選べません。
チェックボックスやドロップダウンにしたい場合は、後述するロック解除後の手順が必要です。
ロック解除の取消

ロック解除は取消できません。
一度そのカードを削除し、新たに追加すればロックされた状態に戻ります。
ただし、各コントロール名も変更されているため、外部で利用している場合は注意が必要です。
ロック解除後にコントロールを変更する

今度はロック解除後の手順です。
こちらはコードさえ修正できれば、自由に配置できます。
試しに日付型カードのコントロールをドロップダウンに変更してみましょう。
ロックを解除する

カードを編集するためにはロック解除が必須です。
解除方法は何通りかありますが、詳細設定からも行えます。
コントロールを追加する

ロックを解除してしまえば、自由にコントロールを追加できます。
日付の選択では選べる範囲が広いので、入力に少々時間を要してしまいます。
ドロップダウンをひとつ設置して、入力範囲を制限してみましょう。
適当にサイズを合わせて、Itemsに下記コードを記載してください。
//今日を含め10日分の選択肢を作成
ForAll(Sequence(10,0),Text(DateAdd(Today(),Value,Days),DateTimeFormat.ShortDate))
これで今日を含め10日分の選択肢が作成されました。
ただ、このままフォームを実行してもこの値は参照されません。
この値をリストに反映させるにはコードの修正が必要です。
追加したコントロールの値でリストを更新させる

カードごとにリストへ書き込まれる値はUpdateに記載されています。
初期値のままでは日付の選択の値が指定されているため、この値が反映します。
従って、ここをドロップダウンに変更すればよいわけですね。
個人的な手法ですが、オリジナルである日付の選択を削除し、その名前をドロップダウンつけるやり方がオススメです。
このやり方なら、オリジナルを参照している他コントロールのエラーを回避できます。
ただ、日付の選択とドロップダウンではフィールドの指定方法が異なるため、下記の通り修正します。

DataCardValue01.Selected.Value
これでエラーは解消され、フォーム実行時にこの値がリストに反映します。
もちろん、リストのデータ型に合わない値を指定した場合はその限りではありません。
例えば日付型に関係のない文字列やtrueなどを与えても書き込み時にエラーが発生します。
その部分だけ注意してくださいね。

コントロールを組み合わせる

複合条件で判定
ロックを解除してしまえば、カード内でやりたい放題できます。
例えばラジオボタンと連動してドロップダウンの選択肢を変更することもできます。
カード内にそれぞれコントロールを追加して、下記コードを記載するだけです。
//DataCardValue01のItems
Switch(Radio1.Selected.Value,
"くだもの",["いちご","りんご","みかん"],
"やさい",["だいこん","にんじん","きゃべつ","ピーマン"],
"おやつ",["チョコレート","ドーナツ","シュークリーム"]
)
//Update
DataCardValue01.Selected.Value
ある程度選択肢を絞りたい場合や、ユーザーや所属で選択肢を変えるといった処理に適しています。
カード内のコントロールを差し替える方法のまとめ
今回はカード内のコントロールを差し替える方法を紹介しました。
あんこ先生はPatch大好きです。
そのため、あまりフォームは使わないのですが、仕組みを理解すればカスタマイズできることが伝わったと思います。
ロックの概念とUpdate、そこに指定するフィールドを抑えておけば自由に作り替えることができます。
紹介したネタを使って、より使いやすいフォームを作成してみてください。
こちらのサイトを結構頻繁に参考にさせていただいております。
カード内のコントロールを差し替える方法を探していて、こちらにたどり着きました。
差し替える例の種類をもっと掲載していただけないでしょうか。
特に知りたいのはテキスト入力をラベルに差し替えたい時です。
Appsの資料はまだ少なく疑問が多いです。
よろしくお願いいたします。