DBGrid1

  A、ShowMessage(IntToStr(Column.Index)); 
  B、ShowMessage(IntToStr(dbgrid1.SelectedField.Index));

1、得到当前格子中的内容:
DBGrid1.Fields[DBGrid1.SelectedIndex].DisplayText;
把DBGrid1.SelectedIndex改为你所希望引用的字段就可以了,如第3个字段。

DBGrid1.Fields[3].DisplayText;

2、双击单元格触发不同事件

procedure TMainFrm.DBGrid1DblClick(sender:TObject);

begin

     if dbgrid1.fields[dbgrid1.selectedIndex].FiledName='GNO' then begin   //   dbgrid1.selectedIndex ---选中单元格列

         //响应事件

     end;

     if dbgrid1.fields[dbgrid1.selectedIndex].FiledName='PSNNAME' then begin

         //响应事件
     end;

     if dbgrid1.fields[dbgrid1.selectedIndex].FiledName='RCSJ' then begin

         //响应事件

     end;

end;

 

//dbgrd1DrawColumnCell事件中 
 //隔列变色
     if DataCol mod 2 = 0 then
    (Sender as TDBGrid).Canvas.Brush.Color := clInfoBk //定义背景颜色
  else  (Sender as TDBGrid).Canvas.Brush.Color := RGB(191, 255, 223); //定义背景颜色
   //隔行变色
   if qryHIS_Prices.RecNo mod 2 = 0 then
    (Sender as TDBGrid).Canvas.Brush.Color := clInfoBk //定义背景颜色
  else  (Sender as TDBGrid).Canvas.Brush.Color := RGB(191, 255, 223); //定义背景颜色
  //当前行变红
  if ((State = [gdSelected]) or (State = [ gdSelected,gdFocused])) then
    if not dbgrd1.SelectedRows.CurrentRowSelected then
      dbgrd1.Canvas.Brush.Color := clRed; //当前选中单元格显示红色
  dbgrd1.Canvas.Pen.Mode := pmMask;
  dbgrd1.DefaultDrawColumnCell(Rect,DataCol,Column,State);

 

posted on 2015-09-05 17:20  雪夜  阅读(375)  评论(0编辑  收藏  举报