помогите разобраться с заданием, идей нет вообще никаких(
Реализовать сортировку строк по заданному столбцу для каждой таблицы
созданна форма, на форме таблица. вот код таблицы
Код:
void TfmPassengerTable::Refresh()
{
lvPassenger->Clear();
TPassenger *passenger;
TListItem *item;
for (int i=0; i<MainForm->Passenger->Count; i++)
{
passenger = (TPassenger *)MainForm->Passenger->Items[i];
item = lvPassenger->Items->Add();
item->Caption = passenger->Passport;
item->SubItems->Add(passenger->Fio);
item->SubItems->Add(passenger->Birthday.FormatString("dd.mm.yyyy"));
item->SubItems->Add(passenger->Nationality);
}
if (lvPassenger->Items->Count > 0)
{
lvPassenger->Items->Item[0]->Selected = true;
lvPassenger->Items->Item[0]->Focused = true;
btAdd->Enabled = true;
btChange->Enabled = true;
btDelete->Enabled = true;
}
else
{
btChange->Enabled = false;
btDelete->Enabled = false;
}
}
//---------------------------------------------------------------------------
void __fastcall TfmPassengerTable::FormClose(TObject *Sender,
TCloseAction &Action)
{
Action = caFree;
}
//-----------------------------------------------------------------------------
void __fastcall TfmPassengerTable::btAddClick(TObject *Sender)
{
// Создание и выделение памяти для графического окна
TfmPassenger *fmPassenger = new TfmPassenger(this);
// Отображение графического окна
if (fmPassenger->ShowModal() == mrOk)
Refresh();
// Удаление окна
delete fmPassenger;
}
//---------------------------------------------------------------------------
void __fastcall TfmPassengerTable::btChangeClick(TObject *Sender)
{
if (lvPassenger->Selected == NULL)
return;
unsigned int Passport = (unsigned int)lvPassenger->Selected->Caption.ToInt();
//создание и выделение памяти для графического окна
TfmPassenger *fmPassenger = new TfmPassenger(this, Passport);
//отображение графического окна
if (fmPassenger->ShowModal() == mrOk)
Refresh();
//удаление окна
delete fmPassenger;
}
//---------------------------------------------------------------------------
void __fastcall TfmPassengerTable::btDeleteClick(TObject *Sender)
{
if (Application->MessageBoxA("Вы действительно хотите удалить выбранную строку?", "Внимание", MB_OKCANCEL) == IDCANCEL)
return;
if (lvPassenger->Selected == NULL)
return;
unsigned int Passport = lvPassenger->Selected->Caption.ToInt();
TPassenger *passenger;
//поиск в таблице пассажиров строки с указанным значением ПК = Passport
for (int i = 0; i<MainForm->Passenger->Count; i++)
{
passenger = (TPassenger *)MainForm->Passenger->Items[i];
if (passenger->Passport == Passport)
break;
}
//исключение указателя из общего списка строк таблицы
MainForm->Passenger->Remove(passenger);
//освобождение памяти
delete passenger;
Refresh();
}
//---------------------------------------------------------------------------
void __fastcall TfmPassengerTable::lvPassengerSelectItem(TObject *Sender,
TListItem *Item, bool Selected)
{
if (Item == NULL || Selected == false)
return ;
// Получение индекса выделенной строки
int index = lvPassenger->Items->IndexOf(Item);
TPassenger *passenger;
// Получение значения выделенной строки
passenger = (TPassenger *)MainForm->Passenger->Items[index];
// Извлечение значения фотографии из выделенной строки и установка фотографии в графический объект
imPhoto->Picture->Bitmap = passenger->Photo;
}
-----------------------------------------------------------
помогите пожалуйста написать код к заданию( если можно с комментариями