リストビューのカラムヘッダをクリックして列を削除するサンプルです。
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
ListView1->ViewStyle = vsReport;
for (int i=0;i<5;i++){
ListView1->Columns->Add()->Caption = "Field" + IntToStr(i);
}
for (int i=0;i<10;i++){
ListView1->Items->Add()->Caption = i;
ListView1->Items->Item[i]->SubItems->Add("項目1-" + IntToStr(i));
ListView1->Items->Item[i]->SubItems->Add("項目2-" + IntToStr(i));
ListView1->Items->Item[i]->SubItems->Add("項目3-" + IntToStr(i));
ListView1->Items->Item[i]->SubItems->Add("項目4-" + IntToStr(i));
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ListView1ColumnClick(TObject *Sender,
TListColumn *Column)
{
if (ListView1->Columns->Count==1){
ListView1->Columns->Clear();
ListView1->Items->Clear();
return;
}
if (Column->Index==0){
for (int i=0;i<ListView1->Items->Count;i++){
for (int j=0;j<ListView1->Items->Item[i]->SubItems->Count;j++){
AnsiString strMoto = ListView1->Items->Item[i]->SubItems->Strings[j];
if (j==0){
ListView1->Items->Item[i]->Caption = strMoto;
}else{
ListView1->Items->Item[i]->SubItems->Strings[j - 1] = strMoto;
}
}
ListView1->Items->Item[i]->SubItems->Delete(ListView1->Items->Item[i]->SubItems->Count-1);
}
}else{
for (int i=0;i<ListView1->Items->Count;i++){
ListView1->Items->Item[i]->SubItems->Delete(Column->Index-1);
}
}
//ヘッダの削除
ListView1->Columns->Delete(Column->Index);
}
//---------------------------------------------------------------------------
DownLoad bcbtips073.lzh 4KB(BCB5)