ワードラップ(自動改行、禁則処理)を無効にして改行を行う方法はありますか?

文書番号 : 27396     文書種別 : 使用方法     最終更新日 : 2010/03/19
文書を印刷する
対象製品
ActiveReports for .NET 6.0J Standard
詳細
ActiveReports には、ワードラップを無効にして改行を行う機能は用意されておりません。

しかしながら、下記のように改行コードを、出力するデータに含めることにより、任意の箇所で改行を行なうことが可能です。こちらを参考にお試しください。

◆サンプルコード(VB.NET)
Private Sub Detail_Format(...) Handles Detail.Format

  ' ワードラップを無効にします。
  Me.TextBox1.WordWrap = False
  ' 20バイト(全角10文字)毎に改行コードを挿入します。
  Me.TextBox1.Text = InsertCrLf(Me.TextBox1.Text, 20)

End Sub

Private Function InsertCrLf(ByVal strData As String, ByVal intBytes As Integer) As String
  Dim cnt As Integer = 0   ' 1行あたりの文字列バイト数
  Dim tmpCnt As Integer = 0  ' 1文字のバイト数
  Dim wk As String      ' チェック用作業領域

  ' 編集結果の格納領域
  Dim MyStringBuilder As New System.Text.StringBuilder

  For i As Integer = 0 To strData.Length - 1
    ' 1文字ずつ切り出します。
    wk = strData.Substring(i, 1)

    ' Shift_JISエンコーディングでの文字列バイト数をカウントします。
    tmpCnt = System.Text.Encoding.GetEncoding("shift-jis").GetByteCount(wk)

    ' 切り出した文字を結合した後のバイト数に応じて「改行」を挿入します。
    If (cnt + tmpCnt = intBytes) Then
      ' (指定したバイト数に一致する場合)
      ' 結合後に改行を挿入します。
      MyStringBuilder.Append(wk)
      MyStringBuilder.Append(Environment.NewLine)
      cnt = 0
    ElseIf (cnt + tmpCnt > intBytes) Then
      ' (指定したバイト数を超える場合)
      ' 改行を挿入した後に結合します。
      MyStringBuilder.Append(Environment.NewLine)
      MyStringBuilder.Append(wk)
      cnt = tmpCnt
    Else
      ' (指定したバイト数未満の場合)
      ' 切り出した文字を結合します。
      MyStringBuilder.Append(wk)
      cnt = cnt + tmpCnt
    End If
  Next i

  Return MyStringBuilder.ToString
End Function

◆サンプルコード(C#)
private void detail_Format(object sender, EventArgs e)
{
  // ワードラップを無効にします。
  this.textBox1.WordWrap = false;
  // 20バイト(全角10文字)毎に改行コードを挿入します。
  this.textBox1.Text = InsertCrLf(this.textBox1.Text, 20);
}

private string InsertCrLf(string strData, int intBytes)
{
  int cnt = 0;  // 1行あたりの文字列バイト数
  int tmpCnt = 0; // 1文字のバイト数
  string wk ;   // チェック用作業領域

  // 編集結果の格納領域
  System.Text.StringBuilder MyStringBuilder = new System.Text.StringBuilder();
      
  for (int i = 0; i < (strData.Length); i++)
  {
    // 1文字ずつ切り出します。
    wk = strData.Substring(i, 1);

    // Shift_JISエンコーディングでの文字列バイト数をカウントします。
    tmpCnt = System.Text.Encoding.GetEncoding("shift-jis").GetByteCount(wk);

    // 切り出した文字を結合した後のバイト数に応じて「改行」を挿入します。
    if (cnt + tmpCnt == intBytes)
    {
      // (指定したバイト数に一致する場合)
      // 結合後に改行を挿入します。
      MyStringBuilder.Append(wk);
      MyStringBuilder.Append(Environment.NewLine);
      cnt = 0;
    }
    else if (cnt + tmpCnt > intBytes)
    {
      // (指定したバイト数を超える場合)
      // 改行を挿入した後に結合します。
      MyStringBuilder.Append(Environment.NewLine);
      MyStringBuilder.Append(wk);
      cnt = tmpCnt;
    }
    else
    {
      // (指定したバイト数未満の場合)
      // 切り出した文字を結合します。
      MyStringBuilder.Append(wk);
      cnt = cnt + tmpCnt;
    }
  }

  return MyStringBuilder.ToString();
}


なお、この方法を用いる場合、当該コントロールのフォントにはプロポーショナルフォントではなく、固定ピッチフォント(等幅フォント)を設定してください。
関連情報
キーワード
HowTo デザイン・レイアウト

この文書は、以前は次のFAQ IDで公開されていました : 12072