如何改变dbgrid单元格内容?(50分)

  • 主题发起人 主题发起人 jieson
  • 开始时间 开始时间
J

jieson

Unregistered / Unconfirmed
GUEST, unregistred user!
我的问题是这样的:
有一个整形字段:1代表Ready
2代表out
要求当某行字段值为1时,单元格显示Ready,2时显示out
 
怎么没人理我,自己顶一下
 
问题不清楚
 
比如数据库里有一个status字段,是整型的,
我想当这个字段值为1时,在dbgrid上显示ready,当值为2时显示out
 
dbgrid那里?是在子段标题显示?还是此字段的值显示
 
呵呵,不好意思,是此字段的值显示
 
我见过类似的,明天找找给你贴上,你急用吗?
 
那我等到明天好了,一定贴啊,谢了先!
 
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if column.FieldName='字段名' then
begin
if column.Field.Value=1 then
column.Field.AsString:=ready;
if column.Field.Value=2 then
column.Field.AsString:=out;
end;
end;
 
把field单元格改为combol可能好用一些。。。
 
procedure TForm_Main.DBGrid_DrawColumnCell(
Sender: TObject;
const Rect: TRect;
DataCol: Integer;
Column: TColumn;
State: TGridDrawState);
var
vText :PChar;
VRect :TRect;
begin
if column.FieldName='字段名' then
begin
vRect := Rect;
if(Column.Field.AsString = '1' then vText := 'ready' else
if(Column.Field.AsString = '2' then vText := 'out' else VText := '';
vRect.Right := vRect.Right -2;
Canvas.FillRect(Rect);
DrawText(Canvas.Handle, vText, StrLen(vText), vRect, DT_RIGHT or DT_SINGLELINE);
end;
end;
 
to y2ky2k:你写的那段程序测试过吗?为什么我一运行的时候老报错
to leehq:你的程序不报错,但是怎么没变化啊?
 
自己up一下
 
应该添加一个计算字段
 
数据库的内容不能变啊
 
不好意思.下面是我试过的...
procedure TForm1.IBTable1idGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
if sender.Value=1 then
text:='ready';
if sender.Value=2 then
text:='out';
end;
添加永久字段,在ONGETTEXT里写
给分吧[:D]
 
你不是改一下Display text就行了吧
 
to y2ky2k:你是在说dbgrid吗?我怎么找不到你说的事件?
问题已经解决了,我用sql语句搞定的。
也许是我表述不清吧
select agent_Stats
case agent_Stats.Status when 1 then 'Ready'
when 2 then 'Wrap'
end as Status
from.....
 
多人接受答案了。
 
后退
顶部