在delphi中,数据库中的数据状态为数字,如何在查询时grid控件动态显示为中文?
数据库中任务状态用数字保存的,如0:新增,1:开始,2:完成,3:未完成使用grid控件查询时,如何动态将这些状态在grid空间中以中文显示为(新增、开始、完成、未完成)...
数据库中任务状态用数字保存的,如0:新增,1:开始,2:完成,3:未完成
使用grid控件查询时,如何动态将这些状态在grid空间中以中文显示为(新增、开始、完成、未完成)? 展开
使用grid控件查询时,如何动态将这些状态在grid空间中以中文显示为(新增、开始、完成、未完成)? 展开
4个回答
展开全部
不知你具体使用哪个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;
展开全部
你可以建一个两个字段的任务状态表
把0:新增,1:开始,2:完成,3:未完成存在里面
然后在dbgrid的dataset中新增一个lookup字段,指向任务状态表,然后dbgrid中删掉原来的数字字段,增加状态中文显示字段就可以了。这样以后任务状态表变化了,代码也不用维护。
把0:新增,1:开始,2:完成,3:未完成存在里面
然后在dbgrid的dataset中新增一个lookup字段,指向任务状态表,然后dbgrid中删掉原来的数字字段,增加状态中文显示字段就可以了。这样以后任务状态表变化了,代码也不用维护。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以在查询的时候,调整数据库的查询语句,使记录集返回的字段和你要求的一致即可。
不知道你的查询语句是什么样的结构,你可以参考如下写法。
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中要显示的字段名要设置的
不知道你的查询语句是什么样的结构,你可以参考如下写法。
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中要显示的字段名要设置的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最简单的方法是在sql语句中做判断,如case col1 when 0 then '新增' when 1 then ‘开始' when 2 then '完成' when 3 then ‘未完成' end,当然方法有很多,看你怎么用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询