看你在哪儿显示.... Query.Open; if Query.FieldByName('bit字段').asBoolean then str := '√' else str := '×';
procedure TfDm.bitGetText(Sender: TField; var Text: String; DisplayText: Boolean); begin displaytext:=true; if sender.asboolean then text:='√' else text:='×' end;query.fieldbyName('bit').OnGetText=bitGetText;
hotzhu(非洲白脸) ,linzhisong(無聊) 地方法都可以 不过,你也可以写在sql语句里 select a,b,c,'√' as 'b字段' from table where 'bit字段' union select a,b,c,'x' as 'b字段' from table where Not 'bit字段'
谢谢以上各位,问题还没解决。写在SQL里我知道:select (case sh when 0 then 'x' else '√' end) from mytable就是不想写在SQL里才这样,只想将数据1显示为√,数据0显示为×hotzhu(非洲白脸)写的不是我想要的,我如何将str显示在dbgrid中? linzhisong(無聊)写的也不行:ADOQuery1.FieldByName('sh').OnGetText:='√'报错!
重新在QUERY中作一个计算字符串字段 在ONCalcFields事件中 if Query.FieldByName('bit字段').asBoolean then Query.FieldByName('显示字段').asstring := '√' else Query.FieldByName('显示字段').asstring := '×';
我调用的是方法,你那样赋值当然不行了!按照我的格式是绝对可以了!^_^! private procedure bitGetText(Sender: TField; var Text: String; DisplayText: Boolean);procedure TfDm.bitGetText(Sender: TField; var Text: String; DisplayText: Boolean); begin displaytext:=true; if sender.asboolean then text:='√' else text:='×' end; 数据集打开时加入: query.fieldbyName('bit').OnGetText=bitGetText;
那是一样的 数据集打开dataset.open; for i:=0 to dataset.FieldCount-1 do begin if dataset.fields[i].datatype=ftBoolean then dataset.fields[i].onGetText:=bitGetText; end;
如此麻烦,我还以为有比较简单的方法。最后还是在SQL里加了一列来显示比较简单:(case bit列 when 0 then 'x' else '√' end) 将原列隐藏显示加的那一列,这样还简单些!
Query.Open;
if Query.FieldByName('bit字段').asBoolean then
str := '√'
else
str := '×';
var Text: String; DisplayText: Boolean);
begin
displaytext:=true;
if sender.asboolean then
text:='√'
else
text:='×'
end;query.fieldbyName('bit').OnGetText=bitGetText;
将该字段的DisplayValues=是;否;
可以参考一下
不过,你也可以写在sql语句里
select a,b,c,'√' as 'b字段' from table where 'bit字段'
union
select a,b,c,'x' as 'b字段' from table where Not 'bit字段'
linzhisong(無聊)写的也不行:ADOQuery1.FieldByName('sh').OnGetText:='√'报错!
在ONCalcFields事件中 if Query.FieldByName('bit字段').asBoolean then
Query.FieldByName('显示字段').asstring := '√'
else
Query.FieldByName('显示字段').asstring := '×';
private
procedure bitGetText(Sender: TField;
var Text: String; DisplayText: Boolean);procedure TfDm.bitGetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
displaytext:=true;
if sender.asboolean then
text:='√'
else
text:='×'
end;
数据集打开时加入:
query.fieldbyName('bit').OnGetText=bitGetText;
数据集打开dataset.open; for i:=0 to dataset.FieldCount-1 do
begin
if dataset.fields[i].datatype=ftBoolean then
dataset.fields[i].onGetText:=bitGetText; end;
将原列隐藏显示加的那一列,这样还简单些!