Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.24;
Скачать: [xml.tar.bz2];




Вниз

Прозьба помогите разобратся где я сделал ошибку с ListView 


Dmitriy_R   (2002-01-06 10:55) [0]

Почему не работает вот этот пример?
Программа запускается и доходит до этого момента а там вся система зависает намертво.

procedure TFormList.BitBtnAddClick(Sender: TObject);
begin
ListView.Items.Add.Caption := EditName.Text;
ListView.Items[0].SubItems.Add(EditName.Text);
ListView.Items[1].SubItems.Add(EditLine.Text);
ListView.Items[2].SubItems.Add(EditFile.Text);
ListView.Items[3].SubItems.Add(MemoDesciption.Text);
end;



Yuri-7   (2002-01-06 12:15) [1]

Ты неправильно все делаешь. Делай например, так:

procedure TFormList.BitBtnAddClick(Sender: TObject);
var item: TListItem;
begin
item:=ListView.Items.Add;
Item.Caption := EditName.Text;
Item.SubItems.Add(EditName.Text);
Item.SubItems.Add(EditLine.Text);
Item.SubItems.Add(EditFile.Text);
Item.SubItems.Add(MemoDesciption.Text);
end;

Не забудь предварительно назначить нужное количество колонок.



Snake   (2002-01-06 12:31) [2]

Ну разумеется. В твоем коде добавлен только 1 итем - нулевой. А ты пытаешься добавлять сабитемы к други...
можно написать так:
ListView.Items.Add.Caption := EditName.Text;
ListView.Items[0].SubItems.Add(EditName.Text);
ListView.Items[0].SubItems.Add(EditLine.Text);
ListView.Items[0].SubItems.Add(EditFile.Text);
ListView.Items[0].SubItems.Add(MemoDesciption.Text);

Или же в начале добавить все остальные итемы, что-то вроде:
ListView.Items.Add.Caption := EditName.Text;
ListView.Items.Add.Caption := EditName.Text;
ListView.Items.Add.Caption := EditName.Text;
ListView.Items.Add.Caption := EditName.Text;

а потом все остальное
ListView.Items[0].SubItems.Add(EditName.Text);
ListView.Items[1].SubItems.Add(EditLine.Text);
ListView.Items[2].SubItems.Add(EditFile.Text);
ListView.Items[3].SubItems.Add(MemoDesciption.Text);



Dmitriy_R   (2002-01-06 13:01) [3]

Большо спасибо всем за помощь, а особенно Yuri-7 это то что было надо. Все заработало.

И вот еще может и здесь поможете разобратся в чем беда?

procedure TFormList.ListViewChange(Sender: TObject;
Item: TListItem; Change: TItemChange);
begin
If Change = ctState then Exit;
EditName.Text := Item.SubItems.Strings[0];
EditLine.Text := Item.SubItems.Strings[1];
EditFile.Text := Item.SubItems.Strings[2];
MemoDesciption.Text := Item.SubItems.Strings[3];
end;



Yuri-7   (2002-01-06 14:58) [4]

Не нужно Strings, пиши:
EditName.Text := Item.SubItems[0];



Yuri-7   (2002-01-06 15:01) [5]

Уточняю предыдущий ответ:
Для получения данных из первой колонки использовать item.caption, а из остальных - item.subitems[0]...[n]



Dmitriy_R   (2002-01-06 18:49) [6]

Спасибо большое там я уже разобрался, запустил и с Strings и без нее. Ну может кто еще на один последний вопрос поможет? Задолбал меня этот лисвиев но он мне нужен.

Может и тут великий мастер подскажет где грабли?
function TFormList.SaveList(FileName: AnsiString):integer;
Var SubItems: TStrings;
I: integer;
begin
Memo.Lines.Clear();
For I := 0 to ListView.Items.Count do
begin
SubItems := ListView.Items.Item[I].SubItems;
Memo.Lines.Add(SubItems.Strings[1]);
Memo.Lines.Add(SubItems.Strings[2]);
Memo.Lines.Add(SubItems.Strings[3]);
end;
Далее идет сохранение файла...
end;

Да и еще как отловить ошибку при записи/чтении
Memo.Lines.SaveToFile(FileName);



Dmitriy_R   (2002-01-07 10:11) [7]

Ну неужели никто не знает как брать данные из листвиев и класть их куда надо.



Patap   (2002-01-08 12:02) [8]

Я бы сделал так:

Var
I: integer;
begin
Memo.Lines.Clear;
with ListView.Items do
For I := 0 to Count - 1 do
begin
with Item[I] do
begin
Memo.Lines.Add(SubItems[0]);
Memo.Lines.Add(SubItems[1]);
Memo.Lines.Add(SubItems[2]);
...
end;
end;
Далее идет сохранение файла...
end;

Команды
Memo1.Lines.SaveToFile("C:\!!!!.txt");
Memo1.Lines.LoadFromFile("C:\!!!!.txt");

работают как танк.



Patap   (2002-01-08 12:03) [9]

Я бы сделал так:

Var
I: integer;
begin
Memo.Lines.Clear;
with ListView.Items do
For I := 0 to Count - 1 do
begin
with Item[I] do
begin
Memo.Lines.Add(SubItems[0]);
Memo.Lines.Add(SubItems[1]);
Memo.Lines.Add(SubItems[2]);
...
end;
end;
Далее идет сохранение файла...
end;

Команды
Memo1.Lines.SaveToFile("C:\!!!!.txt");
Memo1.Lines.LoadFromFile("C:\!!!!.txt");

работают как танк.




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.24;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.021 c
14-75669          Knight                2001-11-23 19:30  2002.01.24  
И ещё кое-что нужно!!!!!


7-75701           Alexei                2001-10-09 14:30  2002.01.24  
Калькулятор


3-75493           Victor                2001-12-20 18:08  2002.01.24  
Доступ к базе данных издалека - как?


1-75540           ctapik-net            2002-01-05 09:28  2002.01.24  
Создание нестандартного компонента


4-75713           Anderius              2001-11-14 21:25  2002.01.24  
Зупуск программы в BackGround режиме