在delphi中,数据库中的数据状态为数字,如何在查询时grid控件动态显示为中文?

数据库中任务状态用数字保存的,如0:新增,1:开始,2:完成,3:未完成使用grid控件查询时,如何动态将这些状态在grid空间中以中文显示为(新增、开始、完成、未完成)... 数据库中任务状态用数字保存的,如0:新增,1:开始,2:完成,3:未完成
使用grid控件查询时,如何动态将这些状态在grid空间中以中文显示为(新增、开始、完成、未完成)?
展开
 我来答
herrywood
2012-01-29 · TA获得超过869个赞
知道小有建树答主
回答量:523
采纳率:66%
帮助的人:485万
展开全部
不知你具体使用哪个Grid控件,不好说。Delphi自带的StringGrid和DBGrid是定义CustomDrawCell事件,在事件中判断是否任务状态列。是,则用canvas.DrawTextRect函数将转换后的中文画上去;否,则调用DefaultDrawCell
更多追问追答
追问
我就是用的自带的dbgrid控件,可以详细说说嘛?最好来一段源码,我好依葫芦画瓢再举一反三,呵呵!
另外这样的时间需要遍历来判断吗?
追答
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
const
StateText: array[0..3] of String = ('新增', '开始', '完成', '未完成');
var
x, y: Integer;
text: String;
begin
with Sender as TDBGrid do
begin
if LowerCase(Field.FieldName) = 'state' then
begin
text := StateText[Field.AsInteger];
y := (Rect.Bottom - Rect.Top - Canvas.TextHeight(text)) div 2;
x := (Rect.Right - Rect.Left - Canvas.TextWidth(text)) div 2;
Canvas.TextRect(Rect, x, y, text);
end
else
DefaultDrawDataCell(Rect, Field, State);
end;
end;
tigercheung
2012-01-29 · TA获得超过1636个赞
知道小有建树答主
回答量:325
采纳率:100%
帮助的人:116万
展开全部
你可以建一个两个字段的任务状态表
把0:新增,1:开始,2:完成,3:未完成存在里面
然后在dbgrid的dataset中新增一个lookup字段,指向任务状态表,然后dbgrid中删掉原来的数字字段,增加状态中文显示字段就可以了。这样以后任务状态表变化了,代码也不用维护。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhjiemm
2012-01-29 · TA获得超过2643个赞
知道大有可为答主
回答量:1834
采纳率:75%
帮助的人:712万
展开全部
你可以在查询的时候,调整数据库的查询语句,使记录集返回的字段和你要求的一致即可。
不知道你的查询语句是什么样的结构,你可以参考如下写法。

select name from TWork as t,
( select '0' as id,'新增' as name
union select '1' ,'开始'
union select '2' ,'完成'
union select '3' ,'未完成'
) as p
where t.state=p.id ;

*TWork是你的表名称
*name 是要在Dbgrid中要显示的字段名要设置的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hxinshu321
2012-02-01 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:152
采纳率:100%
帮助的人:107万
展开全部
最简单的方法是在sql语句中做判断,如case col1 when 0 then '新增' when 1 then ‘开始' when 2 then '完成' when 3 then ‘未完成' end,当然方法有很多,看你怎么用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式