Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.08.2011, 13:05   #1
nVz
Пользователь
 
Аватар для nVz
 
Регистрация: 09.12.2009
Сообщений: 61
По умолчанию данные ListView

Добрый день!!! бьюсь уже час с одной вещью, не получается сделать. итак:
есть 2 ListView. lv1 и lv2. Сначала инфа (около 20 строк сразу) поступает в lv2.
сразу идет проверка, если в lv1 ничего нет, все данные lv2 добавляются в lv1.
с этим все нормально получается.

потом в lv2 опять поступают данные, в основном теже самые. но иногда пару строк новых бывает. и тогда нужна проверка, опять же из lv2 надо добавить те, которых нет в lv1 и тд. у кого какие идеи?

спасайте
icq: 489-124-264; mail: invazia@mail.ru
nVz вне форума Ответить с цитированием
Старый 28.08.2011, 13:14   #2
kettanaito
Веб-дизайнер
Форумчанин
 
Аватар для kettanaito
 
Регистрация: 11.08.2011
Сообщений: 305
По умолчанию

Код:
var i:integer;
begin
for i:=0 to lv2.items.count-1 do 
begin
if Pos('Item',lv2.item[i])<>0 then Refresh else
begin
// Здесь выполняем действия если такого айтима еще нет в списке
lv2.items.add('Item');
end;
end;
Т.е. цикл по к-ству строк в lv2 и проверка нет ли добавляемой строки на данный момент уже в списке. Как вариант можно использовать Pos. Только перепиши цикл под твой метод добавления строк к TreeView и будет работать.
kettanaito вне форума Ответить с цитированием
Старый 28.08.2011, 13:20   #3
nVz
Пользователь
 
Аватар для nVz
 
Регистрация: 09.12.2009
Сообщений: 61
По умолчанию

а разве не нужен еще цикл по lv1 ?? мне же надо сравнивать lv1.items[i].caption и lv2.items[i].caption
icq: 489-124-264; mail: invazia@mail.ru
nVz вне форума Ответить с цитированием
Старый 28.08.2011, 13:25   #4
kettanaito
Веб-дизайнер
Форумчанин
 
Аватар для kettanaito
 
Регистрация: 11.08.2011
Сообщений: 305
По умолчанию

nVz, зачем? Даже если добавление идет как
Код:
for i:=0 to lv1.items.count-1 do 
lv2.items.add(lv1.items[i]);
Второй ListView все-равно будет сравнивать с уже имеющимися items в нем и теми, которые пытаешься добавить.
kettanaito вне форума Ответить с цитированием
Старый 28.08.2011, 13:29   #5
nVz
Пользователь
 
Аватар для nVz
 
Регистрация: 09.12.2009
Сообщений: 61
По умолчанию

в моем случае добавление такое
Код:
with lv1.items.add do
begin
  caption := lv2.items[i].caption;
  subitems.add(lv2.items[i].Subitems[0]);
end;
не пойму что писать в pos'e вместе 'item'
icq: 489-124-264; mail: invazia@mail.ru
nVz вне форума Ответить с цитированием
Старый 28.08.2011, 14:20   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я бы вот так делал:
Код:
var i:integer;b:Boolean;it:TListItem;s:string;
begin
s:='Новый элемент';
with lv2 do begin b:=false;
  for i:=0 to Items.count-1 do
   if Pos(s,items[i].Caption)<>0 then  begin b:=true; break; end;
  if not b then begin  it:=lv2.items.add;  it.Caption:=s;  end;
end;
end;
Цитата:
kettanaito
Ты не забывай проверять свой код. Он не скомпилится, по крайней мере в D6
I'm learning to live...

Последний раз редактировалось Stilet; 28.08.2011 в 14:24.
Stilet вне форума Ответить с цитированием
Старый 28.08.2011, 14:32   #7
kettanaito
Веб-дизайнер
Форумчанин
 
Аватар для kettanaito
 
Регистрация: 11.08.2011
Сообщений: 305
По умолчанию

Stilet, я не брался писать ТС готовый код, даю ему наброски из блокнота
Ответ Stilet верный:
Код:
procedure TForm1.AddItem(Item:TListItem);
var i:integer;b:Boolean;it:TListItem;
begin
with lv2 do begin b:=false;
  for i:=0 to Items.count-1 do
   if Pos(Item.Caption,items[i].Caption)<>0 then  begin b:=true; break; end;
  if not b then begin  it:=lv2.items.add;  it.Caption:=Item.Caption;  end;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
begin
for i:=0 to lv1.items.count-1 do
AddItem(lv1.items[i]);
end;

Последний раз редактировалось kettanaito; 28.08.2011 в 14:36.
kettanaito вне форума Ответить с цитированием
Старый 28.08.2011, 14:34   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну на всякий случай предупреждай, ато есть в этом мире личности что сразу бросаются в бой и долго удивляются чего оно не работает, называя автора ненормативной лексикой )))
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.08.2011, 14:42   #9
kettanaito
Веб-дизайнер
Форумчанин
 
Аватар для kettanaito
 
Регистрация: 11.08.2011
Сообщений: 305
По умолчанию

Stilet, спасибо, учту при следующем ответе.
kettanaito вне форума Ответить с цитированием
Старый 28.08.2011, 14:54   #10
nVz
Пользователь
 
Аватар для nVz
 
Регистрация: 09.12.2009
Сообщений: 61
По умолчанию

Всем спасибо, разобрался!!!
icq: 489-124-264; mail: invazia@mail.ru
nVz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
достать данные из listview.data boshki Общие вопросы Delphi 2 29.05.2011 10:16
Взять данные из ListView из определённого места Shouldercannon Общие вопросы Delphi 2 14.05.2011 11:33
[C# + WPF] ListView. Узнать выделена ли строка в нём. ListView.View == GridView. Casper-SC WPF, UWP, WinRT, XAML 2 12.08.2010 19:04
Размеситить данные в ListView Shouldercannon Общие вопросы Delphi 3 17.04.2010 15:44
Опросить PHP и вывести данные в ListView Shouldercannon Работа с сетью в Delphi 2 13.03.2010 22:10