在Delphi中,我要改变StringGrid的颜色。
rsgBOM.Canvas.Brush.Color:=clGray;
但是clGray颜色太深,想要自定义一个类似#F0F0F0这样的浅灰色,该如何写?

解决方案 »

  1.   

    const
      clLightGray = $00F0F0F0;    //颜色常量值的格式是$00bbggrr, 其中bb、gg、rr分别是蓝、绿、红色的十六进制值......
    rsgBOM.Canvas.Brush.Color:=clLightGray; 
    ......
      

  2.   

    rsgBOM.Canvas.Brush.Color:=$F0F0F0; 
    rsgBOM.Canvas.Brush.Color:=RGB(240,240, 240);
      

  3.   

    谢谢,$00F0F0F0和$F0F0F0都可以。
    但是问题来了:填充后,原本的文字就看不到了,怎么回事?procedure TfrmBOMShow.rsgBOMDrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    begin
      if ((ACol=7)and(ARow>0)) then
      begin
        rsgBOM.Canvas.Brush.Color:=$00F0F0F0;
        rsgBOM.canvas.FillRect(rect);
      end;
    end;
      

  4.   


    procedure TForm1.AdvStringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    begin
      if (Acol = 1) and (Arow = 1) then
      begin
        AdvStringGrid1.Canvas.Brush.Color := $00F0F0F0;
        AdvStringGrid1.Canvas.Font.Color := clred;
        AdvStringGrid1.Canvas.TextRect(rect,rect.Left,rect.Top,AdvStringGrid1.Cells[ACol,ARow]);
      end;end;
      

  5.   

     不要去填充 ,不要去FILL那RECT
      

  6.   

    使用ColorDialog控件 来配置颜色多省事啊!~