Curl Global Community
RasterBox内の任意の位置で改行 - Printable Version

+- Curl Global Community (https://communities.curl.com)
+-- Forum: Discussions (https://communities.curl.com/forumdisplay.php?fid=1)
+--- Forum: General Curl questions (https://communities.curl.com/forumdisplay.php?fid=2)
+--- Thread: RasterBox内の任意の位置で改行 (/showthread.php?tid=1213)



RasterBox内の任意の位置で改行 - kay - 03-08-2015

お世話になります。
連投になってしまいますが、質問させてください。

RecordGridのヘッダーとして次のようなRasterBoxを使用しています。
このRasterBoxに表示する文字列に改行のエスケープを含めても改行されないようです。
(下記のコードのspliceを外すと改行コードの位置が半角スペースのようになります)

Code:
let caption:String = "any\nstring"
{RasterBox
    font-size = 9pt,
    {splice caption}
}

改行位置を自動的に調整するコントロールなのでこういうものだとは思うのですが、
もし任意の位置でも改行させる方法があれば教えてください。

よろしくお願いします。



RE: RasterBox内の任意の位置で改行 - dankom - 03-09-2015

確かにRasterBoxは幅によって自動的に改行したりするので
強制的に改行させるようなオプションは見当たらないですね。

ですが、改行({br})を含んだtextプロシージャをRasterBoxに入れると
改行がされます。

以下のように文字列内に\nがある場合に、
{br}に置き換えそれらをtextプロシージャに渡して、
それをRasterBoxに渡します。

すると\nの箇所で改行されます。


Code:
{let caption:String = "any\nstring"}

{define-class public MyRasterBox {inherits RasterBox}
  
  {constructor public {default ...}
    let args:Arguments = {Arguments}
    let txt-args:Arguments = {Arguments}
    {for (val-identifier:any, key-identifier:#String) key index:int in ... do
        {if key-identifier == null and val-identifier isa String then
            let split-strs:StringArray =
                {val-identifier.split
                    split-chars = '\n'
                }
            {if split-strs.size >= 2 then
                {for s:String key index:int in split-strs do
                    ||{dump s}
                    {if index != 0 then
                        {txt-args.append {br}}
                    }
                    {txt-args.append s}
                }
                {continue}
            }
        }
        
        ||{dump key-identifier, val-identifier}
        {args.append val-identifier, keyword = key-identifier}
    }

    {construct-super
        {text {splice txt-args}},
        {splice args}
    }
  }
  
}
{value
    
    {MyRasterBox
        font-size = 9pt,
        font-weight = "bold",
        background = "yellow",
        caption
    }
}



RE: RasterBox内の任意の位置で改行 - kay - 03-09-2015

ありがとうございます、おかげさまでヘッダーラベルを任意の場所で改行できました。