- Status: Fixed
- Priority: Major
- Resolution: Works as expected
- Platform: Android
- Affects version: 1.13.3.0
Добрый день
Обнаружена ошибка прорисовывания контролов при реализации следующей идеи:
На основной форме есть TfgVerticalScrollBar, внутри которого в рантайме я создаю карточки на базе TfgCardPanel. Каждая карточка содержит свой список на базе TfgCollectionView. Карточки очень часто обновляются, и изначально их количество не известно. Поэтому при каждом обновлении, я создаю новые карточки путем клонирования базовой карточки приблизительно вот так:
procedure TFormMain.BtnFillTap(Sender: TObject); var Panel: TfgCardPanel; Header, Fields: TfgLayout; Hlabel: TfgLabel; View: TfgCollectionView; var I,K,L: Integer; begin SbWithPanel.BeginUpdate; SbWithPanel.DeleteControls; CpBase.Visible := True; try L := Random(2)+1; for I := 1 to L do begin Panel := cpBase.Clone(True) as TfgCardPanel; Panel.Tag := I; Header := Panel.FindComponent('LtPanelName') as TfgLayout; Hlabel := Panel.FindComponent('LbPanelName') as TfgLabel; Hlabel.Text := Format('ПАНЕЛЬ № %d',[I]); K := Random(10)+1; View := Panel.FindComponent('CvBase') as TfgCollectionView; View.Tag := K; Fields := Panel.FindComponent('LtFields') as TfgLayout; Panel.Size.Height := Trunc(Header.Size.Height) + (K * Trunc(Fields.Size.Height)); SbWithPanel.AddControl(Panel); View.ReloadItems; end; SbWithPanel.Realign; finally CpBase.Visible := False; SbWithPanel.EndUpdate; end; end;
Учитывая, что базовую карточку не должно быть видно, я ее скрываю в момент создания формы:
procedure TFormMain.fgFormCreate(Sender: TObject); begin CpBase.Visible := False; end;
И вот тут происходит магия. Если карточка всего одна, то её ширина не растягивается на всю ширину экрана, и только при смене ориентации экрана карточка воспроизводится полностью. Если же создавать одновременно две и более карточки, то они отображаются правильно.
Прошу исправить данную ошибку, поскольку любые механизмы обхода очень не удобны.
Recommended Comments
Create an account or sign in to comment