首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

改變 DBGrid 顏色:隔行換色與欄位著色 (C++ Builder)

     編輯:VC 教學

案例一:OnDrawColumnCell 實現隔行換色

在 DBGrid1 的 OnDrawColumnCell 事件中,依據記錄號奇偶決定背景色,並自行繪製文字。

void __fastcall TForm1::DBGrid1DrawColumnCell(TObject *Sender,
    const TRect &Rect, int DataCol, TColumn *Column, TGridDrawState State)
{
    if (Column->Field->DataSet->RecNo % 2) { // 奇數行
        DBGrid1->Canvas->Brush->Color = clSkyBlue;
        DBGrid1->Canvas->FillRect(Rect);
    }
    // 置中繪製文字
    DrawText(DBGrid1->Canvas->Handle,
        Column->Field->Text.c_str(), -1,
        (RECT*)&Rect,
        DT_SINGLELINE | DT_VCENTER | DT_CENTER);
}

注意:必須自行繪製文字 (DrawText),否則預設繪製會覆蓋背景。

案例二:按鈕點擊設定欄位背景色 (交錯色)

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    for (int i = 0; i < DBGrid1->Columns->Count; i++) {
        if (i % 2 == 0) DBGrid1->Columns->Items[i]->Color = clAqua;
        else            DBGrid1->Columns->Items[i]->Color = clInfoBk;
    }
}

此法直接設定 TColumn::Color 屬性,效果永久且無需自繪事件,適合固定欄位著色需求。

補充提示

  • 若需更複雜樣式 (漸層、圖片背景),請在 OnDrawColumnCell 中使用 Canvas 完整自繪。
  • 隔行色邏輯亦可改用 DataSet->RecNo 或自訂欄位值判斷。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved