1.可以在先设置你所用AdoTable/AdoQuery的Field: 打开Fields Editor窗口,再选"New Field",设置Name为"status",Type选"String",Size输入可以容纳"是/不是"的宽度(8).Field type 选择"Calculate",按确定. 2.在AdoTable/AdoQuery的"OnCaclFields"事件中输入以一以下代码: if Dataset.Fieldbyname('yes').asboolean then Dataset['status']:='是' else Dataset['status']:='不是'; 3.为Dbgrid添加AdoTable/AdoQuery的"status"字段
//.... procedure BooleanFieldGetText(Sender: TField; var Text: String; DisplayText: Boolean); public//....procedure TForm1.Table1AfterOpen(DataSet: TDataSet); begin DataSet.FieldByName('field1').OnGetText := BooleanFieldGetText; end;procedure TForm1.BooleanFieldGetText(Sender: TField; var Text: String; DisplayText: Boolean); const cBoolStr: array[Boolean] of string = ('否', '是'); begin Text := cBoolStr[Sender.AsBoolean]; end; //....//不过我还是建议你直接不要用逻辑类的字段,直接用字符类型多方便 //没有必要减少存储空间来增加自己的麻烦
不在设计时定义字段
打开Fields Editor窗口,再选"New Field",设置Name为"status",Type选"String",Size输入可以容纳"是/不是"的宽度(8).Field type 选择"Calculate",按确定.
2.在AdoTable/AdoQuery的"OnCaclFields"事件中输入以一以下代码:
if Dataset.Fieldbyname('yes').asboolean then
Dataset['status']:='是'
else
Dataset['status']:='不是';
3.为Dbgrid添加AdoTable/AdoQuery的"status"字段
procedure BooleanFieldGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
public//....procedure TForm1.Table1AfterOpen(DataSet: TDataSet);
begin
DataSet.FieldByName('field1').OnGetText := BooleanFieldGetText;
end;procedure TForm1.BooleanFieldGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
const
cBoolStr: array[Boolean] of string = ('否', '是');
begin
Text := cBoolStr[Sender.AsBoolean];
end;
//....//不过我还是建议你直接不要用逻辑类的字段,直接用字符类型多方便
//没有必要减少存储空间来增加自己的麻烦