C++Builder Tips


リストビュー・サブアイテムのフォント変更(列)


リストビューのサブアイテムを変更するサンプルです。
カラムヘッダをクリックするとサブアイテムをボールド表示します。



//---------------------------------------------------------------------------
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<100;i++){
    ListView1->Items->Add()->Caption = i;
    ListView1->Items->Item[i]->SubItems->Add("項目0-" + IntToStr(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::ListView1CustomDrawSubItem(TCustomListView *Sender,
TListItem *Item, int SubItem, TCustomDrawState State,
bool &DefaultDraw)
{
  if (Sender->Column[SubItem]->Tag==1){
    Sender->Canvas->Font->Style = Sender->Canvas->Font->Style << fsBold;
  }

}
//---------------------------------------------------------------------------

void __fastcall TForm1::ListView1ColumnClick(TObject *Sender,
TListColumn *Column)
{
  TListView *lstv = (TListView*)Sender;

  lstv->Column[Column->Index]->Tag = !lstv->Column[Column->Index]->Tag;
  lstv->Refresh();
}

//---------------------------------------------------------------------------

DownLoad bcbtips077.lzh 4KB(BCB5)