Delphi 如何在同一个StringGrid中自定义不同的线条颜色和不同的字体颜色?

Delphi 如何在同一个StringGrid中自定义不同的线条颜色和不同的字体颜色?,delphi,Delphi,我的目标是使用交替颜色的线条自定义StringGrid;使用一种颜色的字母自定义行标题和列标题,使用另一种颜色的字母自定义其他单元格,并;根据其内容,使用特定颜色绘制某些单元格,保持其内容不变 我已尝试更改以下属性设置: TStringGrid.DefaultDrawing、TStringGrid.DrawingStyle、TStringGrid.Canvas.Brush.Color、TStringGrid.Font.Color、TStringGrid.FixedColor、TstringRig

我的目标是使用交替颜色的线条自定义StringGrid;使用一种颜色的字母自定义行标题和列标题,使用另一种颜色的字母自定义其他单元格,并;根据其内容,使用特定颜色绘制某些单元格,保持其内容不变

我已尝试更改以下属性设置:

TStringGrid.DefaultDrawing、TStringGrid.DrawingStyle、TStringGrid.Canvas.Brush.Color、TStringGrid.Font.Color、TStringGrid.FixedColor、TstringRig.Cells[ACol、ARow]、TStringGrid.Canvas.FillRect和事件:TStringGrid.OnDrawCell&TForm.OnCreate。但都不管用

当我画一条线时,它们都是用相同的颜色绘制的,当我在单元格中包含文本时,其他单元格中的所有文本都是用相同的颜色绘制的

我要做的是

创建Form1时,StringGrid必须具有以下特征:

  • ColCount:=32
  • 行数:=13
  • FixedCols:=1
  • FixedRows:=1
  • 固定颜色:=深灰色(列=0,行=0)
  • 固定列填充:=列(1)=“01”、列(2)=“02”、列(3)=“03”、。。。Col(31)=“31/(字体颜色:=clYellow)
  • 已填充固定行:=第(1)行=一月,第(2)行=二月,第(3)行=三月。。。第(12)行=十二月/(字体颜色:=绿色)
  • 行必须用交替的颜色填充:=奇数和偶数,如:1、3、5、。。。浅蓝色//和:2,4,6。。。浅灰色
表单1中有一个编辑组件(Edit1)用于输入年份。键入年份时,所有单元格必须按如下方式填充:

  • 例如:2020年:
  • 一月=单元[1,1]:=“Wed”,单元[2,1]:=“Thu”,单元[3,1]:=“Fri”。。。单元格[31,1]:=“Fri”//(字体颜色:=clWhite)
  • 二月=单元格[1,2]:=“Sat”,单元格[2,2]:=“Sun”,单元格[3,2]:=“Mon”。。。单元格[29,1]:=“Sat”//(字体颜色:=clWhite);直到十二月。。。(如果更改年份(Edit1),也必须更改)
  • 固定列和固定行的字体颜色必须保持为clYellow和clGreen
Form1中还有另一个编辑组件(Edit2)用于输入假日日期(例如:2020年12月25日)。因此,该单元格应将其颜色更改为clRed,保持文本单元格[25,12]:=“Fri”

如果有人能帮我解决这个问题,我将非常高兴。我没有代码可以显示,因为我尝试了太多次,一直在更改代码,试图找到一种方法来实现这一点


很抱歉,我无法打印任何图片,因为这是我在StackOverflow中的第一份出版物。

在StringGrid单元格中使用不同颜色的小示例。您可以使用自己的规则定义颜色

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  cn: TCanvas;
begin
  cn := TStringGrid(Sender).Canvas;
  if gdFixed in State then
     cn.Brush.Color := clYellow
  else
     cn.Brush.Color := RGB(64 * ACol, 255 - 64 * ARow, Random(256));
  cn.FillRect(Rect);
  cn.TextOut(Rect.Left + 2, Rect.Top + 2, Format('%d %d', [ ACol, ARow]));
end;

您看过许多使用
OnDrawCell
提供不同单元格颜色的示例吗?有许多使用OnDrawCell和TStringGrid的示例。说你已经尝试了很多东西,但一件也没有尝试过,这似乎令人难以置信。也不清楚你为什么把自己的话格式化成块引号,用来引用别人的话。你能在你的帖子中提供一个你已经厌倦但没有用的例子吗?这能回答你的问题吗?如果我错了,我可能会感到抱歉,但你的帖子似乎是一个家庭作业。为你做家庭作业对你一点好处都没有。此外,没有明确的问题,但我猜您主要是在寻求有关如何更改背景和文本颜色的帮助。以前有人问过这个问题,我把这个问题和这两个问题联系起来。对于其他要求,如如何确定一年/月/周的第一天的工作日以及如何保存和检索假日日期,欢迎您将特定问题作为新帖子发布。如果我问的问题不正确,很抱歉。这是我第一次在Stackoverflow工作,我还在学习这里的工作原理。这并不能完全满足我的需要,但是,我将学习您的示例,并尝试使其适应我的需要。谢谢你的回答。