Перейти к содержанию
Fire Monkey от А до Я

Лидеры

Популярный контент

Показан контент с высокой репутацией 29.01.2014 во всех областях

  1. Да, согласен. На XE5 Update 2 наблюдается, описанное вами поведение. На текущий момент это уже исправлено. Поэтому предлагаю для XE5 программное решение этой задачи: procedure TForm1.FormCreate(Sender: TObject); begin FTextLyout := TTextLayoutManager.DefaultTextLayout.Create; end; procedure TForm1.FormDestroy(Sender: TObject); begin FreeAndNil(FTextLyout); end; procedure TForm1.Label1Resize(Sender: TObject); var LabelTmp: TLabel; begin if Sender is TLabel then begin LabelTmp := Sender as TLabel; FTextLyout.BeginUpdate; try FTextLyout.Text := LabelTmp.Text; FTextLyout.MaxSize := TPointF.Create(LabelTmp.Width, 1000); FTextLyout.WordWrap := LabelTmp.WordWrap; FTextLyout.Font := LabelTmp.Font; FTextLyout.HorizontalAlign := LabelTmp.TextAlign; FTextLyout.VerticalAlign := LabelTmp.VertTextAlign; finally FTextLyout.EndUpdate; end; LabelTmp.Height := FTextLyout.Height; end; end; Основная идея следующая: мы используем TTextLayout и параметры метки для вычисления размера текста в TLabel. На основании этого задаем новую высоту для метки. Обратите внимание, что в этом примере все метки выравнены по верхнему и нижнему краю. Поэтому ширину для текста я указываю равной ширине метки. Если вам нужно вычислить ширину текста, то нужно задавать тогда высоту. Событие TLabel.Label1Resize нужно задать событию OnResize у меток, где вы хотите автоматически вычислять высоту метки. Рабочий пример можно скачать тут: LabelAutosizeDemo.zip
    1 балл
  2. Если выставить: Label1.Align := alTop; Label1.AutoSize := True; Label1.WordWrap := True; то при компиляции под андроид, Label1.WordWrap := True; автоматически превращается в Label1.WordWrap := False; и перенос не работает.
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...