Блог Александра Божко
Архивы
Рубрики
Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Одним из главных преимуществ Berlin‘а, является визуальный редактор ListView Item. За три месяца с момента выпуска продукта о нём не написал только ленивый. И он действительно удобен. Он экономит “массу времени, сил и духовной энергии…” (с). Но есть одна проблема, с которой столкнулся я, и судя по записям в многочисленных форумах, не я один. Как только свойство Item Appearance принимает значение DynamicAppearance, при работе с представлениями формы начинается чехарда.

ItemApp

ItemAppView

К сожалению, вразумительного солюшна я не нашел, поэтому пришлось импровизировать. Решение получилось довольно простое. Я просто вынес 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, на который натягивается фрейм.

Возможно это и не самое элегантное решение, но работает. Если у вас есть собственное решение проблемы и вы им поделитесь в комментариях – буду признателен.


Поделись с другими!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

1 комментарий: И снова о TListView в Berlin

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Продукты DevArt
Купить онлайн:



Читай русскоязычные Delphi блоги
Каталог блогов Blogdir.ru
Яндекс.Метрика