delphi : how can I change color of a cell in string grid

前端 未结 3 1779
囚心锁ツ
囚心锁ツ 2020-12-07 01:13

I want to change background color ( not font ) of a cell in string grid in delphi .

Just one cell not a row or a column.

Can I?


RRUZ : your pro

3条回答
  •  南笙
    南笙 (楼主)
    2020-12-07 01:43

    I used these codes, translated to C++. There are two specific notes, then I'll post the code.

    1. In "StringGrid1", the property "DefaultDrawing" must be FALSE for this to work.

    2. The "Canvas" object must be fully qualified: ie. StringGrid1->Canvas->Font->Color =clBlack.

    CODE:

    void __fastcall TForm3::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect,
          TGridDrawState State)
    {
    UnicodeString   uStr = "Hello";
    int     k, l;
    char    cc[100];
    
    
    if(TRUE)
        {
        if((ACol <= 1) || (ARow <= 1))
            {
            StringGrid1->Canvas->Font->Color = clBlack;
            StringGrid1->Canvas->Brush->Color = clBtnFace;
            if(ACol == 0)
                {
                if(ARow > 1)
                    {
                    sprintf( cc, " %5.1f", rowLabels[ARow - 2]);
                    uStr = cc;
                    StringGrid1->Canvas->TextRect( Rect, Rect.left+2, Rect.top+2, uStr);
                    StringGrid1->Canvas->FrameRect(Rect);
                    }
                }
            if(ARow == 0)
                {
                if(ACol > 1)
                    {
                    sprintf( cc, " %5.1f", colLabels[ACol - 2]);
                    uStr = cc;
                    StringGrid1->Canvas->TextRect( Rect, Rect.left+2, Rect.top+2, uStr);
                    StringGrid1->Canvas->FrameRect(Rect);
                    }
                }
            }
        else
            {
            switch (ACol%2)
                {
                case 0:
                    {
                    StringGrid1->Canvas->Font->Color = clRed;
                    StringGrid1->Canvas->Brush->Color = 0x00E1FFF9;
                    break;
                    }
                case 1:
                    {
                    StringGrid1->Canvas->Font->Color = clBlue;
                    StringGrid1->Canvas->Brush->Color = 0x00FFEBDF;
                    break;
                    }
                }
            StringGrid1->Canvas->TextRect( Rect, Rect.left+2, Rect.top+2, uStr);
            StringGrid1->Canvas->FrameRect(Rect);
            }
        }
    }
    

提交回复
热议问题