Одним из главных преимуществ Berlin‘а, является визуальный редактор ListView Item. За три месяца с момента выпуска продукта о нём не написал только ленивый. И он действительно удобен. Он экономит “массу времени, сил и духовной энергии…” (с). Но есть одна проблема, с которой столкнулся я, и судя по записям в многочисленных форумах, не я один. Как только свойство Item Appearance принимает значение DynamicAppearance, при работе с представлениями формы начинается чехарда.
К сожалению, вразумительного солюшна я не нашел, поэтому пришлось импровизировать. Решение получилось довольно простое. Я просто вынес ListView во фрейм.
Что бы упростить себе жизнь я использовал компонент TFrameStand. Он доступен в GetIt.
Обычно я формирую ListView руками, не используя LiveBinding. Код инициализации в моём случае вынесен в фрейм. примерно так.
procedure TlvFrame.InitListView; var defDate: TDate; LItem: TListViewItem; LIT: TListItemText; BIT: TListItemImage; begin fdqPPLog.Close; fdqPPLog.Open; fdqPPLog.First; while not fdqPPLog.EOF do begin LItem := lvAttendanse.Items.Add; BIT:= LItem.Objects.FindObjectT<TListItemImage>('imUploaded'); BIT.ImageIndex := 0; LIT:= LItem.Objects.FindObjectT<TListItemText>('txtTimeVal'); LIT.Text:= DateTimeToStr(fdqPPLogPunchTime.AsDateTime); LIT:= LItem.Objects.FindObjectT<TListItemText>('txtEmplIdTitle'); LIT.Text:= 'Employee ID: dfsfdfsddfs sdf sdf sdf sdfsdfgdfhfjhf'; LIT:= LItem.Objects.FindObjectT<TListItemText>('txtWorkCodeVal'); LIT.Text:= IntToStr(fdqPPLogWorkCode.AsInteger); LIT:= LItem.Objects.FindObjectT<TListItemText>('txtWorkCodeTitle'); LIT.Text:= 'Work Code: '; LIT:= LItem.Objects.FindObjectT<TListItemText>('textEmplIdVal'); LIT.Text:= IntToStr(fdqPPLogUserID.AsInteger); fdqPPLog.Next; end; end;
Вызов производится примерно так:
LFrameLV := FrameStand1.New<TlvFrame>(loLV); LFrameLV.Show( procedure(AFrameInfo: TFrameInfo<TlvFrame>) begin AFrameInfo.Frame.InitListView; end );
Где loLV- компонент TLayout, на который натягивается фрейм.
Возможно это и не самое элегантное решение, но работает. Если у вас есть собственное решение проблемы и вы им поделитесь в комментариях – буду признателен.
картинки пропали