- 註冊時間
 - 2006-3-13 
 - 最後登錄
 - 2025-7-23 
 - 在線時間
 - 675 小時 
 - 閱讀權限
 - 200 
 - 積分
 - 417 
 - 帖子
 - 1109 
 - 精華
 - 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 |   
 
  
 |