看来基本功还是不扎实。在TDataset继承下来的控件中,都包含onCalcFields的事件。还包含AutoCalcFields的属性。你只要将AutoCalcFields设置为true,然后在onCalcFields中写入相应的事件即可。注意:必须在TdateSet添加一个CalcFieldsFiled字段。添加的方法是双击Tdataset控件,弹出field编辑器,然后右键。选择new Fields...再然后选择CalcFieldsFiled。。。代码如begin if TDataSet(Sender).FieldbyName('原来存在的保质期字段,可能是tdate类型的').value > now then begin TDataSet(Sender).FieldbyName('专门显示用保质期,应该是字符串类型的').value := '逾期'; endend还有很多细节,不明白的继续问我。
procedure Tfm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);begin with TDBGrid(Sender) do begin if dbgrid1.DataSource.DataSet.FieldByName('保质期').value > now then Canvas.TextOut(Rect.Left+4,Rect.Top+2,'逾期'); end;end;