Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > ListView?


Автор: Pariah 25.4.2006, 17:05
Дарова народ!
Подскажите исходный код как при нажатии на кнопку удалить определённый Items ?
Мой исходный код :
Код

procedure TForm1.Button3Click(Sender: TObject);
begin
ListView1.Items.Destroy;
ListItem.Update;
\\или 
procedure TForm1.Button3Click(Sender: TObject);
begin
ListView1.Items.Destroy;
end;
\\или 
procedure TForm1.Button3Click(Sender: TObject);
begin
ListView1.Items.Delete;\\ а здесь ваще вылетает баг что типа надо задать параметр а какой  \\я немогу понять какойто index : integer ;
End;
 

Автор: Snowy 25.4.2006, 17:17
Код

  ListView1.Items.Delete(Index);
где Index - № итема. 

Автор: Pariah 26.4.2006, 07:06
пасиб!
а как удалить так чтоб при наведении курсором выделялся определённый items, считывался его номер и потом удалялся по нажатию на кнопарь smile  

Автор: sexton 26.4.2006, 07:49
Код

ListView1.Items.Delete(ListView1.Items.ItemIndex);


Цитата

Read ItemIndex to determine which item is selected. The first item in the list has index 0, the second item has index 1, and so on. If no item is selected, the value of ItemIndex is -1. If the list control supports multiple selected items, ItemIndex is the index of the selected item that has focus.

Set ItemIndex programmatically to select an item by passing in the index value.
 

Автор: Snowy 26.4.2006, 09:38
На событие кнопки пиши:
Код

var
  i: integer;
begin
  i := ListView1.Items.ItemIndex;
  if i >=0 then ListView1.Items.Delete(i);
end;

sexton, нужна проверка, т.к. пункт может быть и не выделен. В этом случае вылетит по ошибке. 

Автор: zalex 26.4.2006, 10:06
А если выделенных несколько, то анализируй в цикле свойство Items[i].Selected

 

Автор: Pariah 26.4.2006, 14:15
Всем пасиб!
Только вы чуть-чуть ошиблись!
Правильнее будет так :
Код

procedure TForm1.Button3Click(Sender: TObject);
var
ListItem : TListItem ;
 i: integer;
  begin
   i := ListItem.Index;
   if i >=0 then ListView1.Items.Delete(i);
  ListItem.Update;
 end;


 

Автор: Snowy 26.4.2006, 16:04
Цитата(Pariah @  26.4.2006,  14:15 Найти цитируемый пост)
Только вы чуть-чуть ошиблись!
Это вряд ли.

Цитата(Pariah @  26.4.2006,  14:15 Найти цитируемый пост)
var    
ListItem : TListItem ;    
 i: integer;    
  begin    
   i := ListItem.Index;    
   if i >=0 then ListView1.Items.Delete(i);    
  ListItem.Update;    
 end;
А вот это действительно странно и непонятно.
Похоже, что это вы чуть-чуть ошиблись...

Добавлено @ 16:05 
Этот код ну уж совсем никуда не годится. 

Автор: Pariah 26.4.2006, 17:11
всё может быть, лично у меня(под delphi7) при компиляции багов невозникло и при нажатии на кнопарь
удалить всё сделалось без багов smile  

Автор: Snowy 26.4.2006, 17:21
Ну тогда давай разбирать:

Код

var    
  ListItem : TListItem;    // зачем эта переменная???
  i: integer;    
  begin    
   i := ListItem.Index; // А чему равен ListItem? Ничему. Компилятор так и ругается - не инициализирована
   if i >=0 then ListView1.Items.Delete(i); // теперь мы удаляет из листа первую строку. Вроде хотели выбранную...
  ListItem.Update; // Апдейт чего? ListItem указывает в пустоту...
 end;
 

Автор: Pariah 27.4.2006, 11:48
Код

var    
  ListItem : TListItem;    // для того чтобы Delpi поняло к чему мы обращаемся!
// а обращаемся мы к полю ввода данных для itemsa онo же ListItem.
  i: integer;    
  begin    
   i := ListItem.Index; // Почему компил ругается незнаю а ListItem описывать ненадо т.к это по стандарту поле ввода данных в Items.
   if i >=0 then ListView1.Items.Delete(i); // этот код написал ты, сам и ответь!
  ListItem.Update; // так нажимаем на кнопарь apply в ListItem’e.
 end;

  

Автор: Демо 27.4.2006, 12:04
Цитата(Pariah @  27.4.2006,  11:48 Найти цитируемый пост)
этот код написал ты, сам и ответь!


Вообще-то, у того, кто написал, i принимает вполне конкретное значение(в отличие от твоего).

Цитата(Pariah @  27.4.2006,  11:48 Найти цитируемый пост)
Почему компил ругается незнаю


Вот и узнай сначала. Обращаешься ты к неинициализировнному объекту, получая мусор, либо AV.

Цитата(Pariah @  27.4.2006,  11:48 Найти цитируемый пост)
 а обращаемся мы к полю ввода данных для itemsa онo же ListItem.


Это бред. Обращение к TListItem без TListView не имеет смысла.



Цитата(Pariah @  27.4.2006,  11:48 Найти цитируемый пост)
так нажимаем на кнопарь apply в ListItem’e.


Нет понятия "Кнопарь". Есть понятие "Кнопка". 

Автор: Snowy 27.4.2006, 12:29
Pariah, поясняю.  ListItem, на который ты постоянно ссылаешься в своем коде, совершенно не имеет никакого отношения к ListView. 
Проведу аналогию:
Код
var     
  B1 : TButton;
  i: integer;     
  begin     
   i := B1.Width;
   if i >=0 then Form1.Caption := 'Слон';
  B1.Click;
 end;
Какая логика этого кода, учитывая, что B1 не существует?
Я вроде дал нормальный код. Чем он тебя не устроил? 

Автор: Pariah 28.4.2006, 11:47
да код гуд,только вот при при компиляции вылетал баг что неописан ItemIndex!
 

Автор: Snowy 28.4.2006, 11:57
Просто навскидку накидал.
Правильно будет i := ListView1.ItemIndex; 

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