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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2013, 14:42   #1
swoy45
Пользователь
 
Регистрация: 01.02.2012
Сообщений: 11
По умолчанию Заполнение ListView

Всем доброго времени суток.
Вчера полдня мучился с автоматическим заполнением ListView на delphi, результат вышел не тот, которого я добивался. Я добился того, что колонки разделяются переносом строки, затем новая строка в ListView начинается, когда заканчиваются колонки. В общем, мне нужно заполнить из файла ListView таким образом: колонки разделяются знаком |, строки - переносом строки. Как это осуществить?
UPD: Так же нужно, чтобы это действие могло выполняться в обратном порядке - т.е. сохранять из ListView в текстовик

Последний раз редактировалось swoy45; 11.01.2013 в 14:59.
swoy45 вне форума Ответить с цитированием
Старый 11.01.2013, 15:34   #2
astecenko
Homo Interneticus
Форумчанин
 
Аватар для astecenko
 
Регистрация: 04.03.2011
Сообщений: 611
По умолчанию

Покажите Ваши наработки (которые не с тем результатом...)
astecenko вне форума Ответить с цитированием
Старый 11.01.2013, 17:49   #3
swoy45
Пользователь
 
Регистрация: 01.02.2012
Сообщений: 11
По умолчанию

вот как я описывал процедуру:
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
  SL: TStringList;
  i: Integer;
begin
  SL := TStringList.Create;
  try
    SL.LoadFromFile(edit1.text);
    i := 0;
    while i < SL.Count do
    begin
      with ListView1.Items.Add do
      begin
        Caption := SL[i];
        SubItems.Add(SL[i + 1]);
        SubItems.Add(SL[i + 2]);
      end;
      Inc(i, 3);
    end;
  finally
    SL.Free;
  end;
end;
вот то, что в файле:
Код:
0001|надпись1|25.00
0002|надпись2|55.00
0003|надпись3|85.00
0004|надпись4|105.00
0005|надпись5|135.00
0006|надпись6|155.00
вот что получается:



а вот что должно получиться:


Последний раз редактировалось swoy45; 11.01.2013 в 18:04.
swoy45 вне форума Ответить с цитированием
Старый 11.01.2013, 18:05   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
procedure TForm1.Button2Click(Sender: TObject);
var
  SL,st: TStringList;
  i: Integer;
begin
  SL := TStringList.Create;St := TStringList.Create; st.Delimiter:='|';
  try
    SL.LoadFromFile(edit1.text);
    i := 0;
    while i < SL.Count do
    begin st.DelimitedText:=SL[i];
      with ListView1.Items.Add do
      begin
        Caption := St[0];
        SubItems.Add(St[1]);
        SubItems.Add(St[2]);
      end;
      Inc(i, 3);
    end;
  finally
    SL.Free;
    st.free;
  end;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.01.2013, 18:13   #5
swoy45
Пользователь
 
Регистрация: 01.02.2012
Сообщений: 11
По умолчанию

Stilet, спс, все так, но одна поправочка:
Код:
Inc(i, 3);
зачем? он так пропускает каждые 2 строки, я поставил значение 1, теперь все отлично

а что насчет сохранения в такой же формы текстовик?

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

Код:
with ListView.items do
 for i:=0 to Count-1 do begin
  s:=''; for j:=0 to SubItems.count-1 do s:=s+SubItems[i]+'|';
  st.Append(Caption+'|'+s);
 end;
st.SaveToFile...
Где s:string - временная переменка.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.01.2013, 20:33   #7
swoy45
Пользователь
 
Регистрация: 01.02.2012
Сообщений: 11
По умолчанию

а что значит j?
это не i случайно?

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

J для прохода по колонкам строки.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.01.2013, 16:53   #9
swoy45
Пользователь
 
Регистрация: 01.02.2012
Сообщений: 11
По умолчанию

как этот j прописывать в var? его дельфи так просто не распознает
swoy45 вне форума Ответить с цитированием
Старый 13.01.2013, 16:58   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
как этот j прописывать в var?
или я не понял вопрос или одно из двух!
Так?
Код:
var
  SL,st: TStringList;
  i, j: Integer;
begin
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как перетащить элемент ListView в другой ListView? Paul Hindenburg Компоненты Delphi 5 26.01.2013 11:35
Плавное заполнение ListView в WPF Radical_Edward WPF, UWP, WinRT, XAML 0 26.05.2012 19:27
WPF Listview заполнение столбцов ilsinho_diaz WPF, UWP, WinRT, XAML 1 13.03.2012 18:51
Заполнение Listview из текстового файла tawreos C# (си шарп) 1 04.10.2011 09:35
[C# + WPF] ListView. Узнать выделена ли строка в нём. ListView.View == GridView. Casper-SC WPF, UWP, WinRT, XAML 2 12.08.2010 19:04