【发布时间】:2020-06-30 03:24:11
【问题描述】:
我的目标是自定义一个带有交替颜色线条的 StringGrid;用一种颜色的字母自定义行和列标题,用另一种颜色的字母自定义其他单元格;一些单元格由于其内容而被涂成某种颜色,保持其内容不变。
我已经尝试更改以下属性设置:
TStringGrid.DefaultDrawing、TStringGrid.DrawingStyle、TStringGrid.Canvas.Brush.Color、TStrinGrid.Color、TSringGrid.Font.Color、TStringGrid.FixedColor、TStringGrig.Cells [ACol、ARow]、TStringGrid.Canvas.FillRect 和事件: TStringGrid.OnDrawCell & TForm.OnCreate。但没有一个奏效。
当我画一条线时,它们都用相同的颜色绘制,当我在一个单元格中包含文本时,其他单元格中的所有文本都用相同的颜色绘制。
我正在尝试这样做:
创建Form1时,StringGrid的设计必须具备以下特点:
- ColCount:= 32;
- 行数:= 13;
- FixedCols:= 1;
- FixedRows := 1;
- FixedColor := 深灰色(Col = 0 & Row = 0);
- 固定 Col 填充 := Col(1) = “01”, Col(2) = “02”, Col(3) = “03”, ... Col (31) = “31” // (字体颜色 := clYellow);
- 固定行已填充:= 行 (1) = “一月”,行(2) = “二月”,行(3) = “三月”,...行(12) = “十二月” // (字体颜色 := clGreen);
- 行必须以交替颜色填充:= 奇数和偶数,例如:1、3、5、...浅蓝色 // 和:2、4、6、...浅灰色;
Form1中有一个Edit组件(Edit1)可以输入年份。输入年份时,所有单元格必须填写如下:
- 例如:2020 年:
- 一月 = Cells[1, 1] := “Wed”, Cells[2,1] := “Thu”, Cells[3,1] := “Fri”... Cells[31, 1]: = “Fri” // (字体颜色 := clWhite);
- 二月 = Cells[1, 2] := “Sat”, Cells[2, 2] := “Sun”, Cells[3, 2] := “Mon”... Cells[29, 1] : =“星期六”//(字体颜色:= clWhite);直到 12 月...(如果更改年份 (Edit1),那也必须更改)。
- Fixed Col 和 Fixed Row 的字体颜色必须保持为 clYellow 和 clGreen;
Form1中还有一个Edit组件(Edit2)用于输入假日日期(例如:2020年12月25日)。因此,该单元格应将其颜色更改为 clRed,并保留文本 Cell[25, 12] := “Fri”。
如果有人可以帮助我解决这个问题,我将非常高兴。我没有要显示的代码,因为我尝试了太多次,并且一直在更改我的代码,试图找到一种方法。
抱歉,我无法打印任何图片,因为这是我在 StackOverflow 中的第一个出版物。
【问题讨论】:
-
您是否看过许多使用
OnDrawCell提供不同单元格颜色的示例? -
有很多使用 OnDrawCell 和 TStringGrid 的例子。说你已经尝试了很多事情,但没有包括一个似乎相当难以置信。还不清楚为什么您将自己的话格式化为块引用,用于引用其他人的话。你能edit你的帖子提供一个你已经厌倦但不起作用的示例吗?。
-
这能回答你的问题吗? Change color of text in a TStringGrid cell
-
我可能错了,如果我错了,我很抱歉,但你的帖子似乎是家庭作业。为你做功课对你一点好处都没有。另外,没有明确的问题,但我想您主要是在寻求有关如何更改背景和文本颜色的帮助。以前有人问过这个问题,我链接到一个同时处理这两个问题的问题。对于其他需求,例如如何确定一年/月/周的第一天的工作日以及如何保存和检索假期日期,欢迎您将具体问题发布为新帖子。
-
对不起,如果我没有正确提出问题。这是我第一次来 Stackoverflow,我还在学习这里的工作原理。
标签: delphi