1

小さな「テンプレート」スタイルの TXTextControl ドキュメントをいくつか持っており、これらを組み合わせて大きなドキュメントを作成しています。

テンプレートは TXTextControl を使用してアプリで作成され、コンテンツは TXTextControl InternalFormat を使用してデータベースにバイト配列として保存されます。

各テンプレート ドキュメントを取得し、Selection クラスを使用して新しいドキュメントを作成し、次のようにそれぞれのコンテンツを読み込みます。

tx.Selection.Load(myContent, BinaryStreamType.InternalFormat);

myContent は、データベースから読み取った Byte 配列です。

ほとんどのテンプレート ドキュメントは 1 行ですが、いくつかのタブが変更されており、中央揃え、右寄せなどの場合があります。

私が気付いたのは、各小さなドキュメントが改行で終わっている場合 (つまり、ユーザーがドキュメントを保存する前に Enter キーを押した場合)、テンプレート ドキュメントが正しく挿入されることです。

改行がない場合、タブと位置合わせが失われます。「テンプレート文書」が複数行の場合、書式設定は最後の行だけ失われます。

さらに悪いことに、テンプレート ドキュメントの最後の位置に TextField がある場合、このテンプレート ドキュメントの後に新しいドキュメントに挿入されたものはすべて、TextField 内のテキストであるかのように挿入され、新しいドキュメントの見栄えが悪くなります。

バイト配列から TXTextControl InternalFormat スタイル テキストに少量を挿入し、作成されたとおりに挿入することは可能ですか?

または、使用しているバイト配列を強制的に正しく終了させることはできますか? CR.LF または何かを使用して、正しく挿入するように強制できます。

4

1 に答える 1

1

これに対して私が見つけた唯一の「回避策」は、挿入されたドキュメントの後に新しい行を追加することです。

これは、TXTextControl.TextControl オブジェクトを直接使用してテキストを作成する場合にのみ機能します。選択オブジェクトへの参照は TextControl オブジェクトに属しません。

これは機能します。

TXTextControl.TextControl tx = new TXTextControl.TextControl();
tx.CreateControl();

tx.Selection.Start = -1;
tx.Selection.Text = System.Enviornment.NewLine;

ただし、選択オブジェクトをプロセスに渡し、それを渡してその選択オブジェクト内にドキュメントを構築することはできません。元のコントロール (およびその選択) の書式設定は維持されますが、これはおそらく理にかなっていると思います。

于 2013-10-07T22:59:43.270 に答える