DELPHI:字符串网格标题背景/字体颜色

DELPHI:字符串网格标题背景/字体颜色,delphi,colors,cells,tstringgrid,Delphi,Colors,Cells,Tstringgrid,我已经创建了一个包含一定数量的列和行的字符串网格。我还处理了字符串网格上的right clic事件,当你点击右键时,它会显示一个弹出菜单。这个弹出菜单中有一些选项 我的问题是,当我从弹出菜单中选择一个选项时,如何更改单元格的背景或字体颜色。我知道我们可以使用stringGrid.col获取所选的列,行也可以使用相同的列,我还知道我们可以在绘制单元格事件时更改颜色。但我只想在用户操作时更改颜色 例如,在我的表格中,我打开一个文件,将文件内容加载到字符串网格(它是一个CSV文件)。该文件将在我的应用

我已经创建了一个包含一定数量的列和行的字符串网格。我还处理了字符串网格上的right clic事件,当你点击右键时,它会显示一个弹出菜单。这个弹出菜单中有一些选项

我的问题是,当我从弹出菜单中选择一个选项时,如何更改单元格的背景或字体颜色。我知道我们可以使用
stringGrid.col
获取所选的列,行也可以使用相同的列,我还知道我们可以在绘制单元格事件时更改颜色。但我只想在用户操作时更改颜色

例如,在我的表格中,我打开一个文件,将文件内容加载到字符串网格(它是一个CSV文件)。该文件将在我的应用程序中从字符串网格中修改,然后导出到数据库。用户可以使用右clic选择特定列,然后按主键、外键或任何其他选项。例如,当他选择主键时,我想更改列标题的颜色,这样他就可以知道哪个clunn是主键,哪个是外键等等。明白我的意思吗

PS:我正在使用Delphi2006,无法更改为其他版本

PS:我在stackoverflow/exchange上搜索了一个delphi论坛,但没有找到正确的论坛

  • OnDrawCell
    处理程序中以所需的颜色绘制背景,与当前一样
  • 当您需要更改颜色时,响应用户操作,通过在网格上调用
    Invalidate
    强制绘制循环
    如果出于某种原因不想使整个控件无效,请计算需要重新绘制的矩形,并将其传递给
    invalidate

    将所需的列存储在数组或列表中,如果包含aCol且aRow=0,则签入DrawCell。您在挣扎什么?如何用不同的颜色绘制不同的单元格?绘制单元格的问题是,它在创建单元格时会触发,我不希望这样。我只想在整个字符串网格渲染完成后在用户操作上更改颜色。您可以制作一个破解的TStringGrid并调用受保护的InvalidateCell。我没有InvalidateBu立选项,只有Invalidate。另外,我刚刚试过使用invalidate。当我调用invalidate时,我有一个bool值为true,我的drawcell事件如下所示“如果primaryKeySelected,那么begin cell.text:=sg.Celle[ACol,0]sg.Canvas.brush.Color:=clRed,sg.Canva.FillREct(Rect),textout.end”,但它仍然会为整个网格idk着色,您可以调用
    invalidate。这是一个windows API函数。正如LURD所说,破解类以调用protected
    InvalidateCell
    可能是一个更好的选择。如何添加ivalidTerect或Cell api?它似乎比简单的draw单元格更好。我以前从未和delphi合作过。我以为你已经知道如何画细胞背景了?看来你还没弄明白。你知道在窗户上绘画是如何工作的吗?WM_油漆等。