- 註冊時間
- 2006-3-13
- 最後登錄
- 2025-1-10
- 在線時間
- 673 小時
- 閱讀權限
- 200
- 積分
- 417
- 帖子
- 1107
- 精華
- 0
- UID
- 2
  
|
將函數直接替換
- procedure WrapLine(const s:WideString);
- var
- i, cur, beg, last, LoopPos: Integer;
- WasBreak, CRLF: Boolean;
- s1:string;
- begin
- CRLF := False;
- LoopPos := 0;
- s1 := s;
- for i := 1 to Length(s1) do
- if s1[i] in [#10, #13] then
- begin
- CRLF := True;
- break;
- end;
- last := 1; beg := 1;
- if not CRLF and ((Length(s) <= 1) or (WCanvas.TextWidth(s) <= maxwidth)) then
- OutLine(s + #1)
- else
- begin
- cur := 1;
- while cur <= Length(s) do
- begin
- if s1[cur] in [#10, #13] then
- begin
- OutLine(Copy(s1, beg, cur - beg) + #1);
- while (cur < Length(s1)) and (s1[cur] in [#10, #13]) do Inc(cur);
- beg := cur; last := beg;
- if s1[cur] in [#13, #10] then
- Exit else
- continue;
- end;
- if s[cur] <> ' ' then
- if WCanvas.TextWidth(Copy(s, beg, cur - beg + 1)) > maxwidth then
- begin
-
-
-
- WasBreak := False;
- if (Flags and flWordBreak) <> 0 then
- begin
- i := cur;
- while (i <= Length(s1)) and not (s1[i] in spaces) do
- Inc(i);
- b := BreakWord(Copy(s, last + 1, i - last - 1));
- if Length(b) > 0 then
- begin
- i := 1;
- cur := last;
- while (i <= Length(b)) and
- (WCanvas.TextWidth(Copy(s, beg, last - beg + 1 + Ord(b[i])) + '-') <= maxwidth) do
- begin
- WasBreak := True;
- cur := last + Ord(b[i]);
- Inc(i);
- end;
- last := cur;
- end;
- end
- else
- if last = beg then last := cur;
- if WasBreak then
- OutLine(Copy(s, beg, last - beg + 1) + '-')
- else if s[last] = ' ' then
- OutLine(Copy(s, beg, last - beg)) else
- OutLine(Copy(s, beg, last - beg + 1));
- if ((Flags and flWordBreak) <> 0) and not WasBreak and (last = cur) then
- if LoopPos = cur then
- begin
- beg := cur + 1;
- cur := Length(s);
- break;
- end
- else
- LoopPos := cur;
- beg := last + 1; last := beg;
- end;
- // if s[cur] in spaces then last := cur;
- if s[cur] = ' ' then last := cur;
- Inc(cur);
- end;
- if beg <> cur then OutLine(Copy(s, beg, cur - beg + 1) + #1);
- end;
- end;
複製代碼
資料來源:http://www.delphibbs.com/delphibbs/dispq.asp?lid=2059269 |
|