256 Views
November 15, 21
スライド概要
Notes/Dominoの@関数を取り上げながら、調べたこと、経験したことを雑談してゆきます。
第28回は @DialogBox について。
@ -notes knows community- 2021/04/08 @関数Talk 第28回 公開版 @ 阿部 覚 (tw:) @abesat
@ このトークでネタにする@関数は、 文字か数値か日時の「値を返すこと」が主機能であるものが 多いなと感じています もっとも「値を返すこと」が@関数自身の本質であり、 値を返さない関数は、たぶん無いはずです ただし、別の機能が主役と目され、 値を返すことが脇役化している関数もいくつかあります @ そういう関数のひとつを今回のネタにします
@ @DialogBox で放談 @
@ 今回のネタは@DialogBox 値も返すけれども 主機能はこんなダイアログ画面を表示すること (および必要に応じ、 この画面で得たフィールド値を 元の文書にセットすること) @
@ その構文はこんな感じ ヘルプによればこんな構文 フォームの名前 @DialogBox( form ; [AUTOHORZFIT] :[AUTOVERTFIT] : [NOCANCEL] :[NONEWFIELDS] : [NOFIELDUPDATE] :[READONLY] : キーワード [SIZETOTABLE] :[NOOKCANCEL] : [OKCANCELATBOTTOM] :[NONOTE] ; title ) タイトル @ 最低限、フォームの名前だけでも動作します @DialogBox( form )
form部分の指定 @ 例えば、あるフォームのボタンに @DialogBoxの式を書いてみます これまで同様、例示する各画面のボタンタイトルは ボタンに設定した式と同じにしています @
form部分の指定 @ 相手のformがこんな設計だとすると @ 😏見出ししかないという、かなりサボった設計です😏
form部分の指定 @ こんなダイアログがでます @DialogBox("Form01") @
form部分の指定 @ ところで、ヘルプには form部分は「フォームの名前です」とあるんですが 例えば、こんなサブフォーム設計があって @
form部分の指定 @ そのサブフォーム名を @DialogBox のform部分に指定しても @DialogBox("Subform01") ダイアログは表示されます @
form部分の指定 @ さらに… 仮に、こんなページ設計があって @
form部分の指定 @ そのページ名を @DialogBox のform部分に指定しても @DialogBox("Page01") やっぱりダイアログは表示されます @
form部分の指定 @ まとめると @DialogBoxの最初の引数であるform部分は 「フォーム」だけでなく 「サブフォーム」「ページ」もサポートするようです 「サブフォーム」については ネットで触れている記事もあり 技術者の方にはそこそこ知られていましたが 「ページ」は…少なくとも私は今回初めて認識しました @ いずれもヘルプには記載がないので、 サポートされているのなら😒明記してほしいなぁと思います
form部分の指定 @ サポートされているなら 「フォーム」「サブフォーム」「ページ」どれを使うのが良いか 個人的な見解ですが、 文言が固定のガイドやヘルプの表示を行うダイアログ用には 「ページ」を 表示だけでなくフィールド項目のセットも行う場合は 「フォーム」よりは「サブフォーム」を使ってほしいなと思います @
[AUTOHORZFIT]・[AUTOVERTFIT]・[SIZETOTABLE] @ 次にキーワード部分の3つの引数に着目したいと思います フォームの名前 @DialogBox( form ; [AUTOHORZFIT] :[AUTOVERTFIT] : [NOCANCEL] :[NONEWFIELDS] : [NOFIELDUPDATE] :[READONLY] : キーワード [SIZETOTABLE] :[NOOKCANCEL] : [OKCANCELATBOTTOM] :[NONOTE] ; title ) タイトル @
[AUTOHORZFIT]・[AUTOVERTFIT]・[SIZETOTABLE] @ それぞれ、意味を端的に書くとこんな感じでしょうか [AUTOHORZFIT] 最初のレイアウト領域の横幅分だけ表示して! [AUTOVERTFIT] 最初のレイアウト領域の縦幅分だけ表示して! [SIZETOTABLE] 前言訂正! 「レイアウト領域」を「表」と読み替えて! @
[AUTOHORZFIT]・[AUTOVERTFIT]・[SIZETOTABLE] @ 具体的には [AUTOHORZFIT] と [AUTOVERTFIT]で ダイアログボックスの表示範囲を レイアウト領域の枠内だけに収めます @
[AUTOHORZFIT]・[AUTOVERTFIT]・[SIZETOTABLE] @ たとえばこんな感じ @ ただし、さらに[SIZETOTABLE]があれば、 範囲を絞る対象は レイアウト領域から表にかわります
[AUTOHORZFIT]・[AUTOVERTFIT]・[SIZETOTABLE] @ …なのですが、ベテラン技術者の方、 [AUTOHORZFIT] と [AUTOVERTFIT]って 常にセットで使うもんだと思われてません? @
[AUTOHORZFIT]・[AUTOVERTFIT]・[SIZETOTABLE] @ 「[AUTOHORZFIT] だけ」をやってみました @DialogBox("Subform02";[AutoHorzFit]) @
[AUTOHORZFIT]・[AUTOVERTFIT]・[SIZETOTABLE] @ 「[AUTOVERTFIT] だけ」もやってみました @DialogBox("Subform02";[AutoVertFit]) @
[AUTOHORZFIT]・[AUTOVERTFIT]・[SIZETOTABLE] @ 予想通り、 「横だけ」 「縦だけ」が それぞれ詰められました @ 意外だったのは、それぞれスクロールバーが出て 結局全体を確認できることことでした
[AUTOHORZFIT]・[AUTOVERTFIT]・[SIZETOTABLE] @ レイアウト領域や表が、とても小さかったらどうなるか なんてことも気になって、表でやってみました こんなページを対象に @
[AUTOHORZFIT]・[AUTOVERTFIT]・[SIZETOTABLE] @ レイアウト領域や表が、とても小さかったらどうなるか すこし余白ができるようです @DialogBox("Page02"; [AutoHorzFit]:[SizeToTable]) @DialogBox("Page02"; [AutoVertFit]: [SizeToTable]) @
[AUTOHORZFIT]・[AUTOVERTFIT]・[SIZETOTABLE] @ レイアウト領域や表が、とても小さかったらどうなるか 困るのは、[AUTOHORZFIT]と[AUTOVERTFIT]を 定石通り両方使ってみたとき 余白側だけがずれて表示されて スクロールバーもないので 肝心の表は見えず。。 @ @DialogBox("Page02"; [AutoHorzFit]:[AutoVertFit] [SizeToTable]) やはりほどほどの大きさが必要そうです
@ まだキーワードを3つまでしか紹介していませんので もう1回くらいつづきをやるかも、です @
@ 今回もお付き合い ありがとうございました 😀 @