サポート&サービス

Home > サポート&サービス > テクニカルサポート > ナレッジベース

テクニカルサポート

製品に関する技術的なサービスを提供しています。製品別の技術情報(ナレッジベース)および、対応環境情報をご覧いただけます。また、E-mailによるテクニカルサポートのお申し込みもこちらで受け付けています。

ナレッジベース

SP2 において、FieldやLabelコントロールにコントロール幅以上の文字列をセットすると何も表示されない場合がある
文書番号 : 30968     文書種別 : Bug
最終更新日 : 2012/06/05
文書を印刷する
対象製品
ActiveReports 2.0J Professional
ステータス
回避方法あり
詳細
SP2 において、FieldやLabelコントロールにコントロール幅以上の文字列をセットすると何も表示されない場合があります。

本事象は、以下の条件を全て満たす時に発生致します。
  1. Field 及び Labelコントロールに収まりきらない長さの文字列を出力している。
  2. WordWrapプロパティを"True"に設定している。
  3. VerticalAlignmentプロパティを"0 - ddTXTop"に設定している。

上記の内容を全て満たす場合、SP2(2.4.2.1307)より前のバージョンではコントロールの幅にあわせて文字列がカットされた状態で出力されていたのに対し、SP2 では空白となってしまいます。

なお、本事象は、以下のようなケースでのみ発生する事象です。
  1. Webアプリで ActiveXビューワ(arview2.cab)を使用して、レポートをプレビュー・印刷している。
  2. Windowsフォームアプリで ARViewer2コントロールを使用して、レポートをプレビュー・印刷している。
  3. Windowsフォームアプリで Showメソッドを使用して、レポートのプレビュー・印刷を行っている。
  4. Windowsフォームアプリで PrintReportメソッドやPrintPageメソッドを使用して、レポートを印刷している。
  5. レポートを Tiff形式ファイルにエクスポートしている。
上記以外のご利用方法の場合、本事象は発生致しません。
(例:レポートを PDFファイルにエクスポートする)
回避方法
本件に対応した HotFix版(バージョン 2.4.2.1308)を公開致しました。アプリケーションの形式にあわせて、以下の通り、ご対応ください。

  1. Webアプリケーションで ActiveXビューワを使用している場合(前述 a.のケースに該当する場合)
    こちらから、対応ずみの Cabファイルをダウンロードいただき、運用環境(サーバー)に適用ください。

    なお、クライアントに既にインストールされている ActiveXビューワを新しいバージョンに更新する方法については、「Webアプリケーションで ActiveXビューワを使用している場合に、クライアントに既にインストールされているActiveXビューワよりも新しいバージョンのビューワを自動的にダウンロードさせる方法はありますか?」をご覧ください。

    ※上記文書のサンプルコードでは、codeBase属性に"2,4,2,1306"と記述しておりますが、本修正版を適用する場合には、「codeBase="arview2.cab#version=2,4,2,1308"」と記述してください。


  2. 上記「詳細」で説明されているケースの b.から e.に該当する場合
    本件に関する修正版を適用した開発環境で移行作業を行い、アプリケーションをリコンパイルした上で、アプリケーションと ActiveReports のランタイムファイルを実行環境に再配布する必要がございます。(こちらの内容と同様の作業になります)

    修正版のインストーラは、こちらからダウンロードしてください。

    また、実行環境に配布すべきファイルについては、製品ヘルプの以下のトピックが参考になると存じます。こちらをご覧ください。

    [ActiveReports 2.0J 製品ヘルプ 目次]
    はじめに
     - ファイルの配布について


なお、上記のように修正版を適用せずに、本現象を回避する方法といたしましては、以下のような方法が考えられます。あわせてご参考ください。

  1. プロパティを変更する方法
    本事象は WordWrap と VerticalAlignmentプロパティが特定の値に設定されている時にのみ発生する事象です。
    これらのプロパティを発生しない値に設定することで、ご指摘の事象を回避することが可能です。

    なお、デザイナ上でプロパティを予め変更する以外にも、コード上で動的にプロパティを設定する方法が考えられます。以下のコードをご参考の上、ご検討ください。

    ◆サンプルコード
    (レポート側の処理)
    ' ※ReportStartイベント内でプロパティの値を設定すると
    '  レポートの処理中はその値がデフォルト値として有効に
    '  なります。
    Private Sub ActiveReport_ReportStart()
      Call fncSetProperty(Me.Sections)
    End Sub

    (共通モジュール側の処理)
    Public Sub fncSetProperty(pSecs As Sections)
      Dim i As Integer
      Dim j As Integer

      ' レポート上の全てのセクションに対して、セクション上の
      ' 全てのコントロールを取得し、Field 又は Label の時のみ
      ' WordWrapプロパティを"False"に設定します。
      For i = 0 To pSecs.Count - 1
        For j = 0 To pSecs(i).Controls.Count - 1
          If (TypeOf pSecs(i).Controls(j) Is Field) Or _
            (TypeOf pSecs(i).Controls(j) Is Label) Then
            pSecs(i).Controls(j).WordWrap = False
          End If
        Next j
      Next i

    End Sub


    Sections や Controlsプロパティについては、製品ヘルプの以下のトピックをご覧ください。

    [ActiveReports 2.0J 製品ヘルプ 目次]
    リファレンス
     - ActiveReportデザイナ
      - ActiveReportオブジェクト
       - ActiveReportプロパティ一覧
        - Sectionsプロパティ(ActiveReport)
      - Sectionオブジェクト
       - Sectionプロパティ一覧
       - Controlsプロパティ(Section)


  2. 一定の長さに文字列を加工する方法
    コントロールに収まるような長さ(文字数)にコード上で文字列をカットする方法です。以下のコードをご参考ください。

    ◆サンプルコード
    Private Sub Detail_Format()
      ' 最大14バイトで文字をカットします。
      Me.FldName.Text = StrConv( _
        LeftB$(StrConv(Me.FldName.Text, vbFromUnicode), 14) _
        , vbUnicode)
    End Sub


    なお、実際の文字列の幅は使用するフォントによって変化致します。
    特にプロポーショナルフォントの場合、文字によって幅が異なるため、出力される文字列によって見た目が変化致します。

    [文字の種類 (MS 明朝と MS P 明朝) の違いについて]
    http://support.microsoft.com/kb/879879/ja

    こちらの方法を用いる場合には、等幅フォントを使用することをお勧め致します。
キーワード
08048

この情報は、疑問・問題解決のお役に立ちましたか?

    


こちらに入力されたご質問には回答できませんので、製品に関するお問い合わせは、別途「E-mailサポート」をご利用ください。


※ 個人情報保護のため、個人情報の記入はご遠慮ください。

このページの先頭へ