[Crystal Report] 將太長的字串分行顯示。

Crystal Report 中太長的字串雖然會自動換行,
但經常會出現胡亂斷行的情況,
造成報表排版很亂。

於是我們就可以公式來達到固定字數斷行的目標。

// 將長字串拆解成數行,中間用 CR+LF 分開
// Crystal Report 9 以後適用
//
StringVar s := {dtOMS0303.Remark};              // 要拆解的字串
StringVar output := '';                                         // 輸出字串
NumberVar CharsInALine := 14;                       // 一行幾個字
NumberVar currLength := 0;
while Length(s) > 0 do
(
  // 這只是很粗略的判斷,假定使用者只會輸入半形英數字跟中文字,
  // 不會使用半形的特殊符號,如半形日文假名
  if AscW(s) > 256 then
  (
    currLength := currLength + 2;           // 中文字,長度 + 2
  )
  else
  (
    currLength := currLength + 1;           // 文數字,長度 + 1
  );
  output := output + s[1];
  if currLength >= CharsInALine then
  (
    output := output + Chr(13) + Chr(10);
    currLength := 0;
  );
  s := Mid(s, 2);
);

output;


留言