我想达到这样的效果,就是多选后,被选中的行都变色
不改动数据表的情况下,达到要求

解决方案 »

  1.   

    在OnDrawDataCell事件中处理
    其中有一个参数State: TGridDrawState,可以判断状态TGridDrawState = set of (gdSelected, gdFocused, gdFixed);
      

  2.   


    这样的话好像只能到达一行颜色变化的效果
    我想按住ctrl键后,选中多行,每选中一行,那行的颜色就变化,结果多行的颜色都变
      

  3.   

    在OnDrawDataCell事件中处理可以实现多选,顶下你的40分贴子。
      

  4.   

    type
      Tint=0..255;
      tmyint=set of Tint;   private
        { Private declarations }
        mynums:tmyint; procedure TArrangeTask.db_arrangetaskCellClick(Column: TColumn);
        var
        ls:integer;
    begin
        //显示套料任务的零件明细信息     ls   :=   qry_arrangetask.RecNo;    //如果存在就移除,否则添加
         if ls in mynums then
          Exclude(mynums,ls)
          else
          Include(mynums,ls);      //重新刷新下绑定是为了能触发重绘,实时绘
          qry_arrangetask.close;
          qry_arrangetask.open;
          qry_arrangetask.RecNo:=ls;
    end;procedure TArrangeTask.db_arrangetaskDrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
            if qry_arrangetask.RecNo in mynums then
            begin
              db_arrangetask.Canvas.Brush.Color   :=   clSkyBlue;
              db_arrangetask.Canvas.Font.Color   :=   clBlack;
            end;
          db_arrangetask.DefaultDrawColumnCell(Rect,   DataCol,   Column,   State);
    end;