我的目标是自定义带有交替颜色行的StringGrid;用一种颜色的字母自定义行和列标题,用另一种颜色的字母自定义其他单元格;根据其内容绘制某些单元格的特定颜色,使其内容保持不变。
我已经尝试更改以下属性设置:
TStringGrid.DefaultDrawing,TStringGrid.DrawingStyle,TStringGrid.Canvas.Brush.Color,TStrinGrid.Color,TSringGrid.Font.Color,TStringGrid.FixedColor,TStringGrig.Cells ACol,ARow,TStringGrid.Canvas.FillRect和events: TStringGrid.OnDrawCell & TForm.OnCreate。但都没起作用。
当我画一条线时,它们都是用相同的颜色绘制的,当我在一个单元格中包含文本时,其他单元格中的所有文本都用相同的颜色绘制。
,我想做什么,
创建Form1时,StringGrid必须具有以下特征:
13;
在Edit1中有一个编辑组件(,Form1 )要输入一年。输入一年时,所有单元格必须填入如下所示:
例如: 2020:
在Edit2中还有另一个编辑组件(,Form1 )可以输入假期日期(例如:2020年12月25日)。因此,该单元格应该将其颜色更改为clRed,保留文本Cell25,12 :=“Fri”。
如果有人能帮我解决这个问题,我会很高兴的。我没有代码可以显示,因为我尝试了太多次,并且一直在改变我的代码,试图找到一种方法来做到这一点。
对不起,我无法打印任何图片,因为这是我第一次在StackOverflow上发表。
发布于 2020-06-30 04:17:31
在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;
https://stackoverflow.com/questions/62649802
复制相似问题