我有一个TLabel控件,放在窗体上。因为程序里需要根据情况在其上显示不同长度的信息,所以把它的AutoZize属性设为True。但有时输出的消息太长,导致TLabel控件也变得很长,甚至超出了窗体的右侧。如果能让TLabel控件在达到归定长度后,自动换到下一行去显示就好了。请问大家如何可以解决这个问题?谢谢。

解决方案 »

  1.   

    用Memo控件实现吧.
    把颜色设置成Tlabel颜色一样的.
    不需要滚动条. 
      

  2.   

    这样即可:
    [code]
    Label1.AutoSize := True;
    Label1.Caption := 'aaa' + sLineBreak + 'bbb'#10#13'ccc';
    [/code]----------------------------
    http://del.cnblogs.com/
      

  3.   

    看不见了, 也不能修改, 重发:
    Label1.AutoSize := True;
    Label1.Caption := 'aaa' + sLineBreak + 'bbb'#10#13'ccc';-------------------------------
    http://del.cnblogs.com/
      

  4.   

    function GetEnterStr(str:string;len:integer):string;
    var
    s:string;
    begin
    result:='';
    if length(str)<=len then exit;
    result:=copy(str,1,len);
    delete(str,1,len);
    while length(str)>len do
      begin
      s:=copy(str,1,len);
      result:=result+#13#10+s;
      delete(str,1,len);
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
    str:string;
    begin
    str:='fdsfdsjfdsjfldjsflsdajfdslkahgisdafjdls;ajflsdajfsadjf;asdjfsdakdfas';
    label1.Caption:=GetEnterstr(str,10);
      

  5.   

    上面那个是英文数字的
    下面这个是可以有汉字的
    function GetEnterStr(str:widestring;len:integer):widestring;
    var
    s:widestring;
    begin
    result:='';
    if length(str)<=len then exit;
    result:=copy(str,1,len);
    delete(str,1,len);
    while length(str)>len do
      begin
      s:=copy(str,1,len);
      result:=result+#13#10+s;
      delete(str,1,len);
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
    str:widestring;
    begin
    str:='fdsfdsjfd中华人民共和国,美国日本dls;ajflsdajfsadjf;asdjfsdakdfas';
    label1.Caption:=GetEnterstr(str,10);
    end;
      

  6.   


    1. 自己算 文字高宽和Label高宽2. 用Tmemo可行, 设置 
    memo1.BorderStyle := bsNone;
    memo1.ReadOnly := True;
    memo1.ParentColor := True;       //或memo1.Color := 你想要的颜色;3. 多余的文字用" ... " 代替
    Label1.EllipsisPosition := epNone;
    Label1.AutoSize := False;