问题描述:
StringGrid中显示的数据要进行频繁的更新,但是每次更新的是某个单元格中字段的某个部分,
例如:
cell[1,1]中  00 00 00 00,那么每次可能只是更新其中的一个字节 00实现功能:
把更新的那个字节的00的颜色设为不同的颜色大家给想想办法,本人想到的就是TextRect根据字符位置的定位,还没试过,不知道行不

解决方案 »

  1.   

    自画的时候不要把00 00 00 00一次性textout,而是一次只画一个字节00,当发现这个改变的时候改颜色画就行了
      

  2.   

    用TAdvStringGrid就能很方便解决颜色问题
      

  3.   


    procedure DrawColorText(aCanvas: TCanvas; const x, y: Integer; const Texts: array of string; const Colors: array of TColor; const FontStyles: array of TFontStyles);var
      w, i: Integer;
    begin
      w := 0;
      for i := Low(Texts) to High(Texts) do
      begin
        aCanvas.Font.Style := FontStyles[i];
        aCanvas.Font.Color := Colors[i];
        aCanvas.TextOut(x + w, y, Texts[i]);
        w := w + aCanvas.TextWidth(Texts[i]);
      end;
    end;
    //测试代码
      DrawColorText(
      Canvas,
       100, 100,
       ['测试', '颜色', '字符串', '程序示例'],
       [clBlack, clRed, clBlack, clBlue],
       [[],[fsBold],[],[]]);