你可以在DBGrid的OnDrawDataCell事件中实现
解决方案 »
- 请问各位大侠,如何取得ADSL的上网时间和断线时间?
- 采取调用外部程序的方法为什么找不到sql server呢?
- 怎样获得一个目录下所有相同后缀的文件名?
- midas.dll的错误,高手请进
- var MyReg: TRegistry;为什么有错,
- 请问怎么将另一程序的窗口最小化?
- 关键字:报表
- 急!dbgrid问题
- 交流和求教:如何合理地DOCK(停靠) DLL中的窗口。代码不算长,不算短,进入者需要有心理准备。PS:这里点名几位热心的大虾,请帮忙看一下:老鱼,老千,恶人,还有小新——5岁的那位。
- 如何在delphi程序中判断远程打印机缺纸?!?!?
- 我怎样实现在显示主窗体前显示并控制其它窗体?
- 大下!DELPHI中取子串的函数叫(象VB的MID())? 及判断数据类型的函数名叫?
方法:
1、双击要显示的表,出现字段编辑器后单击右键,选择Add Fields
2、当出现Add Fields对话框时选择你所要的字段,默认是全选
3、选择字段类型设为boolean的字段,然后将DisplayValues属性设为“男;女”(注意,你可不要输入引号!)
OK,搞定!
你有没有用字段编辑器?
你选择的是不是boolean的字段?
你在DELPHI的帮助文件中输入DisplayValues看看能出来什么?
不要说男女,就是显示中华人民共和国和中华全国都可以!
搞定了,是不是默认的顺序就是false,true?不过,还要怯怯的问一句:要是在程序里面,动态的,就没有那个字段对象的话,怎么个语句?......
是query1.?
var
ShowSEX:TBooleanField;
begin
Query1.SQL.Clear;
Query1.SQL.Add('SELECT SEX FROM PERSON');
ShowSEX:=TBooleanField.Create(Self);
ShowSEX.FieldName:='SEX';
ShowSEX.Name:=Query1.Name+ShowSEX.FieldName;
ShowSEX.DisplayValues:='男;女';
ShowSEX.Index:=Query1.FieldCount;
ShowSEX.DataSet:=Query1;
Query1.FieldDefs.UpDate;
Query1.Open;
end;注意:你可不能臭到把“procedure TForm7.BitBtn1Click(Sender: TObject);”也粘贴到你的程序里面!!!
var
ShowSEX:TBooleanField;
begin
Query1.SQL.Clear;
Query1.SQL.Add('SELECT SEX FROM PERSON');
ShowSEX:=TBooleanField.Create(Self);
ShowSEX.FieldName:='SEX';
ShowSEX.Name:=Query1.Name+ShowSEX.FieldName;
ShowSEX.DisplayValues:='男;女';
ShowSEX.Index:=Query1.FieldCount;
ShowSEX.DataSet:=Query1;
Query1.FieldDefs.UpDate;
Query1.Open;
end;注意:你可不能臭到把“procedure TForm7.BitBtn1Click(Sender: TObject);”也粘贴到你的程序里面!!!
error message:
Invalid use of Keyword
Token *
Line number 1请再伸出援助之手吧,看在我是mm的份上? :)注:我没有把“procedure TForm7.BitBtn1Click(Sender: TObject);”也粘贴到程序里面!!! 而且把表名和字段也改过来了.
不过....怎么dbgrid里就这么一列了,其他的字段到哪儿去辣.
呵呵,我是不是有着打破沙锅问到底的精神.
看来我得出手了呵呵
用字段对象吧。
1、双击要显示的表,出现字段编辑器后单击右键,选择Add Fields
2、当出现Add Fields对话框时选择你所要的字段,默认是全选,
3、新建一个字段,取名叫sex,设为STRING型,这个字段成为计算字段;
你可以将性别这个字段的visible属性设为false;再把SEX字段的displaylable
设置为'性别';
4。在QUERY或TABLE部件的Oncalculate事件中编程如下:
if query1.fieldbyname('性别').asinteger=1 then
query1.fieldbyname('sex').asstring:='男'
else query1.fieldbyname('sex').asstring:='女';
大概意思你应该知道了。。:)
select *,
case sex
when true then '男'
when false then '女'
end as SexID
from person
如果是静态的,你的方法是完全可以的,thx;:)
可是如果是动态,你的意思是表中每个现成的字段都要重做一遍吗?不要告诉我答案是肯定的亚. :-<
我觉得只显示了那一个字段是因为你把自己创建的那个字段对象的dataset连上了query1,那么它就独占了......?不明白。
另://悄悄的说:我在上学哪,老板让做课题,呵呵,不得已呀。还请您老人家体谅体谅。re bpc:
静态的完全可以。thx。:)
可是,怎么在程序中动态创建计算字段又实现功能?再:不会到时候也成了dbgrid里只有那么一个字段了吧。 :(to goodman1999
你那句代码:sql语句里面有什么case 的麽?搞不定也。 :(
激活Query1,
把字段全部添入Query1控件。
响应SEX字段的OnGetText消息,看参数定义
if 是男的 DisplayText:='男'else DisplayText:='女'