anchor.diff:    if FAutoSize = AValue then
       Exit; //==>
     FAutoSize := AValue;
  -  if FAutoSize then
  -    FAlignment := taLeftJustify;
     ResizeLabel;
   end;
   
  
positive.code:   FAlignment   := taLeftJustify;
    FWrapText    := False;
    FWrappedText := TStringList.Create;
  end;
  
  destructor TfpgCustomLabel.Destroy;
  
negative.code: 
  procedure TfpgCustomLabel.Wrap(MaxLength: integer; AText: string);
  var
    l, i: integer;
    
    procedure DoWrap(separ: Char);
    begin
      if Font.TextWidth(UTF8Copy(AText, 1, UTF8Pos(separ, AText))) < MaxLength then
      begin
        if FWrappedText.Count > 0 then
        begin
          if UTF8Pos(#13,FWrappedText[Pred(FWrappedText.Count)]) > 0 then
            FWrappedText.Add(UTF8Copy(AText, 1, Pred(UTF8Pos(separ, AText))))
          else
            if (Font.TextWidth(FWrappedText[Pred(FWrappedText.Count)] + ' ' +
                UTF8Copy(AText, 1, UTF8Pos(separ, AText)))) < MaxLength then
              FWrappedText[Pred(FWrappedText.Count)] := FWrappedText[Pred(FWrappedText.Count)] + ' '
                  + UTF8Copy(AText, 1, Pred(UTF8Pos(separ, AText)))
            else
              FWrappedText.Add(UTF8Copy(AText, 1, Pred(UTF8Pos(separ, AText))))
        end
        else
          FWrappedText.Add(UTF8Copy(AText, 1, Pred(UTF8Pos(separ, AText))));
        AText := UTF8Copy(AText, Succ(UTF8Pos(separ, AText)), UTF8Length(AText) - Pred(UTF8Pos(separ, AText)));
      end
      else
      begin
        FWrappedText.Add(UTF8Copy(AText, 1, Pred(UTF8Pos(separ, AText))));
        if l < Font.TextWidth(UTF8Copy(AText, 1, UTF8Pos(separ, AText))) then
          l := Font.TextWidth(UTF8Copy(AText, 1, UTF8Pos(separ, AText)));
        AText := UTF8Copy(AText, Succ(UTF8Pos(separ, AText)), UTF8Length(AText) - Pred(UTF8Pos(separ, AText)));
      end;
      if separ = #13 then
        FWrappedText[Pred(FWrappedText.Count)] := FWrappedText[Pred(FWrappedText.Count)] + separ;
    end;
  
  begin
    FWrappedText.Clear;
    l := 0;
    repeat
      if UTF8Pos(' ', AText) > 0 then
      begin
        if (UTF8Pos(#13,AText) > 0) then
          if (UTF8Pos(#13,AText) < UTF8Pos(' ',AText)) then
            DoWrap(#13)
          else
            DoWrap(' ')
        else
          DoWrap(' ')
      end
      else
        if (UTF8Pos(#13,AText) > 0) then
          DoWrap(#13)
        else
        begin
          FWrappedText.Add(AText);
          AText := '';
        end;
    until UTF8Pos(' ', AText) = 0;
    
    if FWrappedText.Count > 0 then
      if UTF8Pos(#13,FWrappedText[Pred(FWrappedText.Count)]) > 0 then
        FWrappedText.Add(AText)
      else
        if (Font.TextWidth(FWrappedText[Pred(FWrappedText.Count)] + ' ' + AText)) < MaxLength then
          FWrappedText[Pred(FWrappedText.Count)] := FWrappedText[Pred(FWrappedText.Count)] + ' ' + AText
        else
          FWrappedText.Add(AText);
  
    for i := 0 to  Pred(FWrappedText.Count) do
      if UTF8Pos(#13,FWrappedText[i]) > 0 then
        FWrappedText[i] := UTF8Copy(FWrappedText[i], 1 , UTF8Length(FWrappedText[i]) - 1);
  
    if Height < FWrappedText.Count * (Font.Height + LineSpace) then
      Height := FWrappedText.Count * (Font.Height + LineSpace);
    if AutoSize then
      if Width < l then  	// adjust the length to the longest word
        Width := l;
  end;
  
  procedure TfpgCustomLabel.SetWrapText(const AValue: boolean);
  