当label设定固定长度且autosize=false的时候,如何判断内容是否过长(label是否无法显示全部),且得到label中显示的字符的个数或者得到显示内容的最后字符的index???谢谢大虾指教…………

解决方案 »

  1.   

    Lenght(Lable1.Caption)
    就可以得到它的長度.
      

  2.   

    楼上的大哥,请认真看题目。
    您这样是得到label内容的字符个数,并不能解决问题!
      

  3.   

    试试这个:function GetLabelLastChar(ALabel: TLabel): Char;
    var
      I, iLen: Integer;
    begin
      iLen := Length(ALabel.Caption);
      case ALabel.Alignment of
        taCenter:; //暂时没
        taLeftJustify:
          for I := 1 to iLen do
            if ALabel.Canvas.TextWidth(Copy(ALabel.Caption, 1, I)) > ALabel.Width then
              Break;
        taRightJustify: I := Length(ALabel.Caption) + 1;
      end;
      Dec(I);
      if I > 0 then
        Result := ALabel.Caption[I]
      else
        Result := #0;
    end;
      

  4.   

    谢谢,postren(小虫):
    如果label改为QRLabel该如何实现啊????
      

  5.   

    显示长度会和字体的大小有关,可以加一个辅助的Label,把autosize设成True,得到字符串的具体长度,再根据字符数量以及Label的实际长度计算得出最后一个字的Index
      

  6.   

    Canvas.TextWidth('AAAA')可以取出宽度,然后和你Lable的当前宽度相比较就行了。也不是简单问题复杂化,因为那个的AutoSize太难受了。
      

  7.   

    也不是问题的复杂化,问题的提出当然有其提出的原因!
    delphi72() 的方法也可行,但也不见得简单了!
    对小虫的方法加入了自己修改,问题得到了解决。谢谢各位大虾的指教!