如题
先简介一下我的程序,先从excel导入一批数据,然后对每一行数据进行分别对比,若该行中某个数据大于该行的平均数,则背景标记为淡绿色,字体为红色。
我曾用过ondrawcell来做,却达不到我的目的
请各位想想办法,解决一下!!

解决方案 »

  1.   

    确认一下,是ondrawcell,还有我想通过对button的点击,也就是click来完成数据标记的功能,请大家指点啊
      

  2.   


    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Grids;type
      TForm1 = class(TForm)
        StringGrid1: TStringGrid;
        procedure FormCreate(Sender: TObject);
        procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
          Rect: TRect; State: TGridDrawState);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    var
      i,j: integer;
    begin
      Self.StringGrid1.RowCount := 11;
      Self.StringGrid1.ColCount := 11;
      for i:=0 to 10 do
        for j:=0 to 10 do
          StringGrid1.Cells[i,j] := inttostr(i*j);
    end;procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    var
      V: string;
    begin
      V := StringGrid1.Cells[ACol, ARow];
      if strtoint(StringGrid1.Cells[ACol, ARow])>20 then
        StringGrid1.Canvas.Brush.Color := clRed
      else
        StringGrid1.Canvas.Brush.Color := clWhite;  StringGrid1.Canvas.FillRect(Rect);  DrawText( StringGrid1.Canvas.Handle,
                PChar(V),
                Length(V)+1,
                Rect,
                0);
    end;end.
      

  3.   

    确认一下,是ondrawcell,还有我想通过对button的点击,也就是click来完成数据标记的功能,请大家指点啊
    //---------------
    维护一个二维数组(或其它结构/如链表), 保存click标记的单元格坐标.
      

  4.   

    还是ondrawcell
    只是ondrawcell根据一个bool标志决定是否变色
    click点击则改变这个bool标志
      

  5.   

    点击时,对点击的单元格做个标记,比如在其中写个特殊字符啥的,根据此字符,去画cell
      

  6.   

    我有个想法,不知道可不可行,用click事件调用stringgrid中的ondrawcell事件,来设置stringgrid中单元格的颜色,我不知道这是否可行,如果可以,请问怎么写?
      

  7.   

    简单点的,对每个单元格设置 一些状态,在onDrawCell事件里对单元格的设置进行判断,分别要画为什么颜色,单击事件后再更改相应的状态即可
      

  8.   

    你不是说通过click事件来改变嘛
    要你那样也行,在导入的同时进行计算,然后再设标志状态 不难实现
      

  9.   

    如果是支持单元格独立设置颜色的adstringgrid,可以导入后立即扫描计算一遍,设上颜色
    标准的stringgrid,只能在ondrawcell时画颜色,是否每次都需要计算一次才设颜色?好像会效率略低,不过应该也不要紧,因为只计算同一行的20列