Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > TListItems


Автор: Antony41 15.6.2009, 16:28
Вот беру я 2 ListView'a в первый заполняю разные итемы. Потом выполняю LV2.Items:=LV1.Items
И во втором появляются все items'ы из первого. А мне надо чтобы этого первого ListView'a не было а был там типа наследник. ну как Memo и TStringsList?

Автор: Rrader 15.6.2009, 16:38
TListItems неотделим от конкретного TListView и отдельно не используется. Может просто код по-другому построить? Данные, значит, есть - сделать функцию заполнения, и все.

Автор: pseud 15.6.2009, 17:11
Цитата(Antony41 @  15.6.2009,  16:28 Найти цитируемый пост)
 LV2.Items:=LV1.Items

лучше так
Код

LV2.Items.Assign(LV1.Items)

а вообще, заполняй сразу LV2, например так:
Код

LV2.Items.BeginUpdate;
try
  {заполнение}
finally
  LV2.Items.EndUpdate;
end;

Автор: Antony41 15.6.2009, 18:01
задача такая

Код

procedure TForm1.FindFileFileMatch(Sender: TObject; const Folder: String;  const FileInfo: TSearchRec); //короче это процедура типа когда поиск нашёл нужный мне файл
var
  LI:TListItem;
begin
            LI:=LV.Items.Add;
            LI.Caption:='капшн'
            LI.SubItems.Add('Folder');
            LI.SubItems.Add('asdasd'); 
            LI.SubItems.Add('1235');
            LI.SubItems.Add('qwer1');
    LI.SubItems.Add('qwer4');
    LI.SubItems.Add('qwerdf');
end;

А добавляет он поочерёдно, сначало caption, потом подитемы
Из за этого возникает ошибка в процедуре

Код

procedure TForm1.LVCheckStateChange(Sender: TObject;  Item: TListItem);
begin
//Узнать сколько обектов checked
  if FCheckCount<-1 then
    FCheckCount:=0;
if LV.Items.Count<>0 then
  if Item.Checked then
    begin
      Inc(FCheckCount);
      Sum:=Sum+GetFileSize(IncludeTrailingBackslash(Item.SubItems[0])+Item.Caption);
    end
  else
    if FCheckCount<>-1 then
      begin
        Dec(FCheckCount);
        Sum:=Sum-GetFileSize(IncludeTrailingBackslash(Item.SubItems[0])+Item.Caption);
      end;
    st1.Items.Item[10].SubItems[0]:=FloatToStrF(FCheckCount+1,ffNumber,10, 0);
    st1.Items.Item[11].SubItems[0]:=GapSize(Sum);
end;

Заметьте это процедура выполняется при изменении чего либо, Когда функция поиска начинает добавлять итем, функция изменения срабатывает и выводит ошибку, типа subItem не создан по которому я пытаюсь:
Код

Sum:=Sum-GetFileSize(IncludeTrailingBackslash(Item.SubItems[0])+Item.Caption);

определить размер! ФАК!=(

и вот хочу попробовать сделать добавление построчно...

Автор: Antony41 15.6.2009, 19:24
спасибо всем пересмотрел и нашёл решение. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)