如果是SQL Server可以用Case语句创建一个视图,DBGrid从视图中取数据SELECT CASE b_gd WHEN 1 THEN '固定' WHEN 0 THEN '非固定' END AS 性别 FROM TABLE1
如果是SQL Server可以用Case语句创建一个视图,DBGrid从视图中取数据SELECT CASE b_gd WHEN 1 THEN '固定' WHEN 0 THEN '非固定' END AS 你的显示列名 FROM TABLE1如果非SQL Server可以Case语句的语法有所不同
或者这样,你增加一个计算字段 Query双击,右键,New Field,Field type为Calculaged,然后在这个Field的OnGetText事件里写代码: procedure TForm1.Query2bgdGetText(Sender: TField; var Text: String; DisplayText: Boolean); begin if Query2.FieldByName('b_gd').AsBoolean=false then Text:='固定' else Text:='非固定'; end;
或者这样,你增加一个计算字段 Query双击,右键,New Field,设置Field type为Calculaged,然后在这个Field的OnGetText事件里写代码:假设增加的Field的name为bgdprocedure TForm1.Query2bgdGetText(Sender: TField; var Text: String; DisplayText: Boolean); begin if Query2.FieldByName('b_gd').AsBoolean=false then Text:='固定' else Text:='非固定'; end;
To: gzmhero(hihihi) 我按照你的方法试了,但提示错误: EDatabaseError with message 'Query2:Field' b_gd 'not found'.
你的Query2里面有b_gd字段吗?先Query双击,右键,Add All Fields。然后再增加计算字段。
procedure TdfrmCU_Orderm.DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin IF column.FieldName='IsConfirm' then //确认 begin IF column.Field.AsBoolean = true then begin DBGrid2.Canvas.Font.Color:=clBlue; DBGrid2.Canvas.Font.Height:=12; DBGrid2.Canvas.Font.Style:=[fsBold]; DBGrid2.Canvas.TextRect(Rect,Rect.left+1,Rect.top+1,'确认'); end Else begin DBGrid2.Canvas.Font.Color:=clred; DBGrid2.Canvas.Font.Height:=12; DBGrid2.Canvas.Font.Style:=[fsBold]; DBGrid2.Canvas.TextRect(Rect,Rect.left+1,Rect.top+1,'取消'); end; end; end;
还有没有其它设置,刚改了,还是不行!
CASE b_gd WHEN 1 THEN '固定' WHEN 0 THEN '非固定' END AS 性别
FROM TABLE1
CASE b_gd WHEN 1 THEN '固定' WHEN 0 THEN '非固定' END AS 你的显示列名
FROM TABLE1如果非SQL Server可以Case语句的语法有所不同
Query双击,右键,New Field,Field type为Calculaged,然后在这个Field的OnGetText事件里写代码:
procedure TForm1.Query2bgdGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
if Query2.FieldByName('b_gd').AsBoolean=false then
Text:='固定'
else
Text:='非固定';
end;
Query双击,右键,New Field,设置Field type为Calculaged,然后在这个Field的OnGetText事件里写代码:假设增加的Field的name为bgdprocedure TForm1.Query2bgdGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
if Query2.FieldByName('b_gd').AsBoolean=false then
Text:='固定'
else
Text:='非固定';
end;
我按照你的方法试了,但提示错误:
EDatabaseError with message 'Query2:Field' b_gd 'not found'.
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
IF column.FieldName='IsConfirm' then //确认
begin
IF column.Field.AsBoolean = true then
begin
DBGrid2.Canvas.Font.Color:=clBlue;
DBGrid2.Canvas.Font.Height:=12;
DBGrid2.Canvas.Font.Style:=[fsBold];
DBGrid2.Canvas.TextRect(Rect,Rect.left+1,Rect.top+1,'确认');
end
Else
begin
DBGrid2.Canvas.Font.Color:=clred;
DBGrid2.Canvas.Font.Height:=12;
DBGrid2.Canvas.Font.Style:=[fsBold];
DBGrid2.Canvas.TextRect(Rect,Rect.left+1,Rect.top+1,'取消');
end;
end;
end;