type
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    Table1: TTable;
    DataSource1: TDataSource;
    procedure Table1Field1GetText(Sender: TField; var Text: String;
      DisplayText: Boolean);
    procedure Table1Field1SetText(Sender: TField; const Text: String);
    procedure Table1AfterOpen(DataSet: TDataSet);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Table1Field1GetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin
  case Sender.AsInteger of
    0: Text := '女';
    1: Text := '男';
    2: Text := '不男不女';
  end;
end;procedure TForm1.Table1Field1SetText(Sender: TField; const Text: String);
begin
  if Text = '女' then
    Sender.AsInteger := 0
  else if Text = '男' then
    Sender.AsInteger := 1
  else Sender.AsInteger := StrToIntDef(Text, 0);
end;procedure TForm1.Table1AfterOpen(DataSet: TDataSet);
begin
  DataSet.FieldByName('Field1').OnGetText := Table1Field1GetText;
  DataSet.FieldByName('Field1').OnSetText := Table1Field1SetText;
end;

解决方案 »

  1.   

    谢谢 zswang(伴水)(需要充充电) !
    我的Tfield 不是固定的字段对象,事件代码我在“何处写”呢?
      

  2.   

    procedure TForm1.Table1AfterOpen(DataSet: TDataSet);
    begin
      DataSet.FieldByName('这里就是不固定字段').OnGetText := Table1Field1GetText;
      DataSet.FieldByName('这里就是不固定字段').OnSetText := Table1Field1SetText;
    end;
      

  3.   

    Table1Field1GetText
    Table1Field1SetText
    并不是针对Field1的只是一个事件类型