Q171:大量に文字が登録されている項目について、元の管理システム画面上では、改行されて表示されていますが、作成したMZプラットフォーム上では、1行で表示されます。
Q171-1:
改行について
先のユーザー情報画面ですが、おかげさまで情報表示がほぼできました。
大量に文字が登録されている項目について、元の管理システム画面上では、改行されて表示されていますが、作成したMZプラットフォーム上では、1行で表示されます。元のデータには改行コードが入っている状態なのですが、MZプラットフォームで何かのtrueをfalseに変えたりして、改行表示を反映させる事は可能でしょうか。FAQを読むと、SQL文で対応する記事がありましたが、どうなのでしょうか。
A171-1:
画面表示に使っている部品は[テキストフィールド]ですが、これは『一行の文字列を入力、表示する』ものです。改行文字が入っていても、一行で表示されます。改行文字は消えてしまう訳ではありません。
[テキストエリア]なら、改行も含めた長い文字列を表示することができますので、改行が含まれると分かっているデータを表示する部品は[テキストエリア]に変更して頂くのが宜しいかと思います。
なお[データベースアクセス]で取得したデータを一旦[テーブル]や[テーブル格納変数]に全データを設定しますが、セルデータに改行文字が含まれていても消えてはいません。
MZPlatform次期バージョンでは[テーブル]の属性情報を変更すると、セルに改行を含む文字列も表示できるようになる予定です。
[文字列格納変数]でも改行文字は保持されます。
※Ver.2.10より、テーブルの文字列型セルに複数行表示機能が追加されました。
Q171-2:
テキストエリアの使用で解決致しました。これに関して質問なのですが、複数行あるデータを表示させますと、スクロールバーが一番下に下がった状態で、最下行を基準に表示されます。これを、1行目を基準に表示する方法はありますでしょうか。
A171-2:
データ設定直後は、入力カーソルが文字列最後にあり、スクロールバーのスライダー位置が一番下に下がった状態かと思います。
[テキストエリア]のメソッド「scrollsForTop()」を「テキストを設定する(String)」の処理の後に設定して頂ければ、スライダー位置も入力カーソルも先頭に移動します。
英語名のままのメソッドは「起動メソッド情報」設定窓で「全メソッド対象」にチェックマークを入れて頂くと、選択候補として現れるようになります。
Q171-3:
本件につきまして、テキストエリア「テキストを設定する(String)」の下に起動メソッド追加を行い、同番号のテキストエリアに接続して 「scrollsForTop()」を設定しましたが、状況が変わりません。何か原因は考えられますでしょうか。
他、「\」 で登録されている文字が、テキストエリア上に「/」で表示されます。\と表示する方法はありますでしょうか。
A171-3:
大変失礼致しました。お手数をお掛けして申し訳ございません。
画面構成部品の描画処理の関係上、[テキストエリア]にデータが描画される前に、「scrollsForTop()」の描画が前後して行われ、スライダーは一旦上部に移動したが、すぐに文字列の描画により下側に移動してしまっていると推測されます。
解決策としましては、
1)一連の「テキストを設定する」処理の一番最後に、「scrollsForTop()」の処理を追加して、少し処理に時間差があるようにする。
2)1)でも充分でなければ、「フレームを表示する()」処理を、間に追加する。
再描画されますが閉じる訳ではないので、[フレーム]が既に表示されている時に実行しても、特に問題はございません。
順番は
<テキストを設定する>
<テキストを設定する>
:
:
(<フレームを表示する>)
<ScrollsForTop()>
となります。
> 他、「\」 で登録されている文字が、テキストエリア上に「/」で表示されます。\と表示する方法はありますでしょうか。
半角「\」と半角「\」は、同じ文字コード(0x5c)を指していますが、フォントにより見え方が違っているかと思います。
[テキストエリア]で右クリック>[フォント]>[設定する...]で日本語フォントを選ぶと半角「\」で表示されます。
ただ、少し気がかりなのは「\」は特殊記号ですので、SQLServerへデータ追加・更新の際にシングルの「\」は消えてしまう恐れもあることです。
これは[文字列格納変数]で置換し「\\」とするなどの回避方法が考えられます。
環境にもよりますが、お心にお留めおき下さい。
備考:「データベース」の「Q&A196」、「テキストエリア」の「Q&A3」にも一部掲載。
ご連絡:
本件、問題のテキストエリアは一番最後に位置していましたので、2)の方法で解決致しました。\はMSゴシックにして解決致しました。
更新処理はまだ手を付けていませんので、ご指摘頂きました事は、留意致します。
ありがとうございました。