怎样有条件地在网格中显示记录信息?(150分)

  • 主题发起人 主题发起人 黄耀彰
  • 开始时间 开始时间

黄耀彰

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样有条件地在网格中显示记录信息?
例如:有个学生成绩表,有若干个字段(语文、数学、英语、政治)等等,
现在要求某些小于60分的成绩被显示为“不及格”,
>=60分的则显示成绩数值本身。如果它能实现,网格中的信息就更清晰了.
 
如果用的是MS SQLserver,可以用如下的SQL语句产生一个计算字段:
select
case
when fScore > 60 then Convert(char(10), fScore)
else '不及格'
end sScore
from score

如果是其它数据库,应该也可以用类似的SQL语句。
或者用StringGrid控件,那么你从数据库中取出值后,根据值的大小确定在每个格子内
填写分数还是“不及格”,完全是你的程序来控制。
 
Oracle用Decode
 
tm的就行了。
 
在Grid中响应ondrawcell事件,HELP中有例子!
 
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
// if Table1.FieldByName('CUstno').AsFloat>1355 then
// DBGrid1.Canvas.Font.Color := clRed;
if (column.Index=1) and (Table1.FieldByName('CUstno').AsFloat>1355)then
begin
DBGrid1.DefaultDrawDataCell(Rect,Nil, State);
Dbgrid1.Canvas.textout(Rect.left,Rect.top,'不及格');
end;

end;
 
if (column.Index=1) and (Table1.FieldByName('CUstno').AsFloat>1355)then
begin
DBGrid1.DefaultDrawDataCell(Rect,Nil, State);
DBGrid1.Canvas.Font.Color := clRed;
Dbgrid1.Canvas.textout(Rect.right-15,rect.top,'aa');
end;
 
这种问题都是用组织一条SQL语句来作的
 

用 TField 中的 OnGetText 和 OnSetText 事件就能实现

我发个例给你,包你满意!!!
 
TO :黎永欢

例子收到了,先谢谢!试了再说。

 
多人接受答案了。
 
后退
顶部