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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2008, 21:09   #1
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию Удаление записи в ListView

Нужна помощь, чет никак не могу придумать алогоритм удаления записи из списка ListView -
например я удаляю запись из середины списка, чтобы остальные записи сдвинулись по номерам выше, тоесть у меня есть 10 записей, я удаляю 5 и того, 6 становится 5, 7 становится 6 и т.д.

Ща приведу код, что у меня уже есть, заранее благодарю за помощь.

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ComCtrls;

type
  TForm1 = class(TForm)
    sbAdd: TSpeedButton;
    sbDel: TSpeedButton;
    SpeedButton3: TSpeedButton;
    Edit1: TEdit;
    Label1: TLabel;
    SpeedButton4: TSpeedButton;
    SpeedButton5: TSpeedButton;
    Edit2: TEdit;
    Label2: TLabel;
    Edit3: TEdit;
    Label3: TLabel;
    Edit4: TEdit;
    Label4: TLabel;
    Edit5: TEdit;
    Label5: TLabel;
    lvAct: TListView;
    procedure sbAddClick(Sender: TObject);
    procedure sbDelClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

Type
  lvAct = TListView;
  Zap=record
    num:integer;
    kaf,predm,pib,pr:string;
  end;

Var
  Blok:Zap;

procedure AddBlok(Blok:Zap); //Процедура формірованіянія запису
begin
  with Form1.lvAct.Items.Add, Blok do
	  begin
	   Caption:=IntToStr(Blok.num);
     SubItems.Add(Blok.kaf);
     SubItems.Add(Blok.predm);
	   SubItems.Add(Blok.pib);
	   SubItems.Add(Blok.pr);
	  end;
end;

{$R *.dfm}

procedure TForm1.sbAddClick(Sender: TObject);
begin
  Blok.num:=StrToInt(Edit1.Text);
  Blok.kaf:=Edit2.Text;
  Blok.predm:=Edit3.Text;
  Blok.pib:=Edit4.Text;
  Blok.pr:=Edit5.Text;
  Edit1.Text:=IntToStr(lvAct.Items.Count+2);
  AddBlok(Blok);
end;

procedure TForm1.sbDelClick(Sender: TObject);
begin
  lvAct.Items.Delete(StrToInt(Edit1.Text)-1);
end;

end.

Последний раз редактировалось Небесный; 14.12.2008 в 21:11.
Небесный вне форума Ответить с цитированием
Старый 14.12.2008, 22:22   #2
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

Элементарно, ватсон:

Код:
procedure TForm1.sbDelClick(Sender: TObject);
var n:integer;
begin
  for n:=StrToInt(Edit1.Text)-1 to lvAct.Items.Count-2 do begin
    lvAct.Items[n].Caption:=lvAct.Items[n+1].Caption;
  end;
  lvAct.Items.Delete(lvAct.Items.Count-1);
end;
На самом деле удалять надо последний элемент. А тот, что якабы надо удалить мы присваиваем Caption следующего.
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление записи из файла(Delphi) студентка Помощь студентам 1 16.12.2007 13:54
Удаление записи с Registry celovec Общие вопросы Delphi 2 29.07.2007 21:55
Удаление записи с файла werser Помощь студентам 8 27.06.2007 06:25
Добавление и удаление записей в Listview Scorpeon Компоненты Delphi 0 08.06.2007 23:09
Удаление записи из *.dbf BJF.41 БД в Delphi 4 15.03.2007 18:29