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

HyperZen

Пользователи
  • Постов

    203
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1

Весь контент HyperZen

  1. Спасибо. Но высота каждого Item'а разная, я думал высоту контента конкретного Item'а необходимо учитывать при подсчете.
  2. В этом месте можно чуть-чуть подробнее? На сколько контент больше по размеру относительно компонента? Добавив в расчеты 30 пикселей к текущему результату, получил то, что хотел. Но эти 30 пикселей были найдены путем подбора, хотелось бы как то математически обосновать эти цифры: h := GetTextHeight(AItem.Text, ListView1.Width-16, ListView1.ItemAppearanceObjects.ItemObjects.Text.Font, TTextAlign.Leading); AItem.Height := Trunc(h) + 30; И какой максимальный текст можно вместить в итем ListView?
  3. А в данном случае что необходимо передавать в качестве AMaxWidth? При передаче width текущего ListView картина наблюдается та же, что и на скриншоте выше. При вычитании из размера ListView 7 или 16 пикселей, как писал ZuBy, все равно картина остается той же... procedure TForm12.ListView1UpdateObjects(const Sender: TObject; const AItem: TListViewItem); var h: Single; begin h := GetTextHeight(AItem.Text, ListView1.Width - 16, ListView1.ItemAppearanceObjects.ItemObjects.Text.Font, TTextAlign.Leading); AItem.Height := Trunc(h); end;
  4. Добрый вечер! Все-таки, как корректно подсчитывать высоту итемов данного компонента, если учитывать, что текст может быть достаточно большим. Использую код с данного сайта, все работает корректно, пока не встречается текст, чуть больше одного абзаца: function TextHeight(const AText: string; aTextSettings: TTextSettings; const MaxWidth: Single): Single; // uses FMX.Graphics, FMX.TextLayout, FMX.Types, Math var Layout: TTextLayout; aRect: TRectF; aWW: Boolean; begin Result := 24; if AText.IsEmpty then Exit; aWW := Pos(#13#10, AText) > 0; if (aTextSettings.WordWrap) or (aWW) then aRect := RectF(0, 0, MaxWidth, MaxSingle) else aRect := RectF(0, 0, MaxSingle, MaxSingle); Layout := TTextLayoutManager.DefaultTextLayout.Create; try Layout.BeginUpdate; Layout.TopLeft := aRect.TopLeft; Layout.MaxSize := PointF(aRect.Width, aRect.Height); Layout.Text := AText; Layout.WordWrap := aTextSettings.WordWrap; Layout.HorizontalAlign := TTextAlign.Leading; Layout.VerticalAlign := TTextAlign.Leading; Layout.Font.Assign(aTextSettings.Font); Layout.Color := aTextSettings.FontColor; Layout.RightToLeft := false; Layout.EndUpdate; aRect := Layout.TextRect; finally FreeAndNil(Layout); end; Result := aRect.Bottom; end; И вызов в onUpdateObject: procedure TForm12.ListView1UpdateObjects(const Sender: TObject; const AItem: TListViewItem); var TS: TTextSettings; begin TS := TTextSettings.Create(nil); // задаем параметры текста для расчета "Text" TS.WordWrap:= True; TS.Font.Assign(ListView1.ItemAppearanceObjects.ItemObjects.Text.Font); AItem.Height := Trunc(TextHeight(AItem.Text, TS, ListView1.Width)); FreeAndNil(TS); end; Получаем:
  5. Нет. Это все-таки косячок. Я с таким сталкивался, когда пытался выставлять размеры TListView автоматически относительно количества текста. ПС: так и не победил автоподгон высоты при большом тексте... Кто-то с этим справился?!
  6. Хмм... так хинты высвечиваются только при использовании обычного VCL А причём тут VCL? Если создать простой проект VCL Form Application, все работает и со свойством формы BorderStyle = None, хинты высвечиваются, все корректно. А если создать кроссплатформенный проект - хинты с этим свойством не работают.
  7. Хмм... так хинты высвечиваются только при использовании обычного VCL
  8. Вот проект Multi-Device-Application
  9. я так понял он только для update 1? А поделиться этим хотфиксом можете? Если у тебя нет подписки, то этот хотфикс ты не сможешь установить. Не берусь гадать, но может заблокировать студию. Все хотфиксы установлены и чудненько работают Спасибо братьям китайцам
  10. HyperZen

    TMultiView и TListBox

    Данный "костыль" не помог в случае Popover Решил проблему, изменив свойство на Drawer
  11. HyperZen

    TMultiView и TListBox

    Но как то же его можно победить Взять, к примеру, ES проводник, там вверху справа есть меню, с выпадающим (Popover) MultiView, после выбора любого пункта меню, выделение сбрасывается
  12. HyperZen

    TMultiView и TListBox

    Теперь я спокоен, если Вам это тоже удалось воспроизвести
  13. HyperZen

    TMultiView и TListBox

    Нашел косяк (если это косяк - может быть это нормальное поведение): в режиме Drawer работает и выделение итема снимается, в режиме Popover выделение не снимается вообще никак.
  14. HyperZen

    TMultiView и TListBox

    Ничего не понимаю, создал новый проект, бросил на форму TMultiView, на него TListBox, создал 5-6 Итемов, и код: procedure TForm1.lst1ItemClick(const Sender: TCustomListBox; const Item: TListBoxItem); begin case lst1.ItemIndex of 0: ShowMessage('a'); 1: ShowMessage('b'); 2: ShowMessage('c'); 3: ShowMessage('d'); end; Item.IsSelected := False; mv1.HideMaster; end; Все работает Почему в старом проекте наблюдаются такие "глюки"?
  15. HyperZen

    TMultiView и TListBox

    Удивительно, так тоже не работает! Выделение итема все равно остается...
  16. HyperZen

    TMultiView и TListBox

    Ни на платформе Windows, ни на Android не работает Вот скриншоты, сделанные по шагам в винде, на Андроиде то же самое.
  17. HyperZen

    TMultiView и TListBox

    Case работает, выделение итема не снимается. Сейчас взял пример из студии (MultiViewDemo) - там оказывается та же проблема... выделение не пропадает...
  18. HyperZen

    TMultiView и TListBox

    Не помогает, странно...
  19. HyperZen

    TMultiView и TListBox

    Не могу понять почему так происходит: при клике/тапе по TListBoxItem пишу строку, чтобы снять выделение итема: Item.IsSelected := False; // в примере студии работает Теперь в своей программе: procedure TfrmMain.TListBox1ItemClick(const Sender: TCustomListBox; const Item: TListBoxItem); begin case TListBox1.ItemIndex of 0: begin // действие 1 end; 1: begin // действие 2 end; 2: begin // действие 3 end; end; Item.IsSelected := False; MultiView1.HideMaster; end; - выделение нажатого итема не снимается. Почему?
  20. Что-то я даже внимания на это не обращал У меня не вызывает это никаких неудобств
×
×
  • Создать...