フィールド/テキストの余白について

237 views
Skip to first unread message

ysd

unread,
Oct 26, 2016, 6:28:05 AM10/26/16
to RapidReportサポート QAフォーラム
お世話になっております。
度々すみません。

StringFormat.GenericTypographic の続きになってしまうのですが、

GenericTypographic にすると、文字の印字開始位置がその領域にピッタリになってしまい、
フィールドの四角形で枠線を書くと、文字と枠線がくっついてしまいます。

余白(padding)指定が欲しくなります。

今は、罫線は rect と line で引いている(移植元がそうなっていた)ので問題になっているわけではないのですが、
余白指定のカスタマイズの方法を教えていただけないでしょうか?
できれば上下左右を別々に指定したいです。

よろしくお願いいたします。

RapidReport

unread,
Oct 26, 2016, 7:36:01 PM10/26/16
to RapidReportサポート QAフォーラム
伊藤です。

こちらの機能も、次バージョンで予定している変更を行った上で対応したほうが行いやすくなると思います。
次回リリース時に、カスタマイズの方法をご案内します。

次回リリースは、遅くとも来週中には行う見込みです。


ysd

unread,
Oct 27, 2016, 12:29:53 AM10/27/16
to RapidReportサポート QAフォーラム
お世話になります。

承知いたしました。
よろしくお願いいたします。

RapidReport

unread,
Nov 4, 2016, 3:18:17 AM11/4/16
to RapidReportサポート QAフォーラム
伊藤です。

先ほどリリースしたバージョン4.27にて、GdiTextをサブクラス化できるように修正しました。

バージョンアップをしていただいた上で、以下のサンプルをお試しください。
パディングについても対応してみましたので、ご確認をお願いします。



なお、前回アップした際は要素レンダラのクラス名を、FieldRenderer/TextRendererとしていましたが、
デフォルトのクラスと名前が衝突しないよう、今回はFieldRendererEx/TextRendererExと変更してサンプルを作成してみました。
お気をつけください。

ysd

unread,
Nov 4, 2016, 4:48:22 AM11/4/16
to RapidReportサポート QAフォーラム
お世話になっております。

RapidReport 4.27 と、いただいた「DLL本体とソース」、「サンプルプログラム」を確認いたしました。
ありがとうございました。

パディングについても理解いたしました。

上下左右を別々に指定したいのですが、もちろん、プロパティを4つ作ればいいのですが、
padding の下に left, right, top, bottom のような持ち方はできるのでしょうか?
その場合、design.Get("padding") はどのような値が返ってくるのでしょうか?
また、デザイナーの setting.json の書き方はどうなりますでしょうか?

わがままですみません。
よろしくお願いいたします。

RapidReport

unread,
Nov 4, 2016, 5:10:54 AM11/4/16
to RapidReportサポート QAフォーラム
伊藤です。

すみませんが、カスタムプロパティについては、階層構造をとることはできません。

      properties: [
        {key: "padding_left", type: "number"},
        {key: "padding_top", type: "number"},
        {key: "padding_right", type: "number"},
        {key: "padding_bottom", type: "number"}
      ]

のように、4つ定義するようにしていただくようお願いします。

どうぞ、ご了承ください。

ちなみに、font.name や layout.x1 のように、標準で用意されているプロパティには階層構造となっているものがあります。
これらのデータは、たとえば、

 design.child("font").get("name")
 design.child("layout").get("x1")

などのように書くことで、値を得ることができます。

RapidReport

unread,
Nov 4, 2016, 5:22:28 AM11/4/16
to RapidReportサポート QAフォーラム
伊藤です。

たとえば、

      properties: [
        {key: "padding", type: "string"}
      ]

のように文字列としてプロパティを定義しておいて、
上下左右のパディングをスペース区切りで [5 10 5 10] 等のように入力するようにし、

        Dim padding As String = design.Get("padding")
        Dim paddings As String() = padding.split(" ")
        _region.Top = region.Top + CType(paddings(0), Single)
        _region.Left = region.Left + CType(paddings(1), Single)
        _region.Right = region.Right - CType(paddings(2), Single)
        _region.Bottom = region.Bottom - CType(paddings(3), Single)

こんな感じで設定する、などの対応はいかがでしょうか?

ysd

unread,
Nov 4, 2016, 6:28:36 AM11/4/16
to RapidReportサポート QAフォーラム
なるほど。了解いたしました。
スペース区切りも考えてみます。

ありがとうございました。

もう1つ確認させてください。

余白ではなくて、GenericTypographicの方なのですが、
これ指定した場合に「縮小して全体を表示」はどのように機能しますでしょうか?

と申しますのは、
いただいたサンプルですと、フィールドの幅が 150pt で、全角 15文字を 10pt フォントなので、ちょうど収まっています。
「改行して全体を表示」で改行されません。
この状態で「縮小して全体を表示」をオンにすると、縮小されてしまいます。(「改行して全体を表示」はオフ)
幅がいくつになれば縮小されなくなるかというと、159pt でした。
GenericTypographicを指定しない場合でも 159pt でした。

GenericTypographicかどうかを考慮して「縮小して全体を表示」するのは難しいでしょうか?

RapidReport

unread,
Nov 6, 2016, 9:57:35 PM11/6/16
to RapidReportサポート QAフォーラム
伊藤です。

情報ありがとうございます。

「縮小して全体を表示」機能では、どのフォントサイズならば領域に収まるか?を判断しているのですが、
これを行う際にGenericTypographicに設定したStringFormatが正しく利用されていませんでした。

これはバグと考えてよいかと思いますので、
修正してバージョン4.27.1として、先ほどリリースしました。

アップデートすることで、カスタマイズしたField/Textレンダラでも、「縮小して全体表示」が正しく動作するようになるはずです。

お手数ですが、ご確認をお願いいたします。

ysd

unread,
Nov 6, 2016, 11:29:35 PM11/6/16
to RapidReportサポート QAフォーラム
お世話になっております。

バージョン 4.27.1 でGenericTypographicを考慮した「縮小して全体表示」になっていることを確認いたしました。

ありがとうございました。
Reply all
Reply to author
Forward
0 new messages