Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Заполнение ListView (http://forum.oszone.net/showthread.php?t=251176)

swoy45 11-01-2013 15:18 2064264

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

LilLoco 11-01-2013 15:35 2064290

swoy45, Что то не совсем понятно. Что значит автоматическим? Что должно получиться?
Но навскиду. В циклах проходитесь по необходимым вам данным. В "внутреннем" цикле формируются строки, через "|"
Код:

Row = ""
...............................................
Row = Row + "данные" + "|";

По окончании формирования строки удаляете последний символ (им будет "|")

Ну а во внешнем добавляете строки в ListView.

Для конкретики, хотелось бы видеть код, исходные данные, что требуется...

swoy45 11-01-2013 17:50 2064441

вот как я описывал процедуру:
Код:

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:21 2064467

я додумался сделать вот так, теперь все работает как надо
Код:

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, 1);
    end;
  finally
    SL.Free;
    st.free;
  end;
end;

остается один вопрос, как все это дело сохранять в текстовик такой же формы?

Delirium 12-01-2013 15:41 2065039

Ну как как. Построчно обходим элементы и записываем. После записи каждого элемента в строке пишем |. После записи последнего элемента в строке ListView записываем | и пишем в конец файла.


Время: 03:40.

Время: 03:40.
© OSzone.net 2001-