Я бы пошел другим путем.
Во первых, я бы не ориентировался на текстовый файл. Что стоит сделать запись типа
Код:
type
PMySheduler = ^TMySheduler;
TMySheduler = record
FDate : TDateTime;
FType : String;
FMessage : String;
end;
и далее ее просто писать/читать с помощью потоков, а хранить в TList. При этом у тебя будет 1 запись на каждое задание.
Но если уж ты пошел по пути текстового файла, то тогда у тебя опять же несколько вариантов.
Вычислять ID'ы нужных записей, исходя из индекса записи в визуальном списке (благо, у тебя их в StringList'е всегода по 4), либо при добавлении Item'а в ListView в его проперть Data писать ID первого элемента из StringList'а, а далее удалить 4 записи, начиная с этого ID'а.
Первый вариант:
Код:
procedure TForm1.DeleteRecord(AVisualID : Integer); // принимаем индекс записи в TListView
var
I, ASLID : Integer;
begin
ASLID := AVisualID * 4; // у нас по 4 строки в StringList на каждую запись
// Теперь проверим, что у нас достаточно записей на удаление.
If StringList.Count < ASLID + 3 Then
Raise Exception.Create('Записей-то не хватает!');
// Ну, типа, все ОК - удаляем...
For I := 1 To 4 Do // удаляем 4 записи
StringList.Delete(ASLID);
// итем в ListView грохнуть придется самостоятельно
end;
Здесь, StringList - это тот список, где у тебя храняться данные.
Второй вариант:
При добавлении записи:
Код:
var
Item : TListItem;
...
Item := ListView1.Items.Add;
Item.Data := Pointer(I); // Если помню точно, то там в цикле заполнение, где I - номер текущей строки в StringList, увеличиваемый на 4 при каждой итерации
При удалении:
Код:
procedure TForm1.DeleteListViewItem(AItem : TListItem);
var
I, ASLID : Integer;
begin
ASLID := Integer(AItem.Data); // получили ID первой стоки в StringList
// Теперь проверим, что у нас достаточно записей на удаление.
If StringList.Count < ASLID + 3 Then
Raise Exception.Create('Записей-то не хватает!');
// Ну, типа, все ОК - удаляем...
For I := 1 To 4 Do // удаляем 4 записи
StringList.Delete(ASLID);
AItem.Delete; // Удаляем сам итем.
end;
Вызов будет выглядеть примерно так:
DeleteListViewItem(ListView1.Selected);