我以前做的毕业设计是没有问题的
不过,在查询数据库时,老师要我把DBgrid中的数据改为中文
比如,数据库中有个表:[mx_table],在[mx_table]中有个字段borrow,int类型。
这个字段当为1时,表示借,为0时表示贷。现在我查询出来了,在DBgrid中是显示成数字的形式,1或0。
现在,指导老师要我把这个改了,1改成借,0改成贷。
但数据库中就是1或0啊,怎么在DBgrid中让借,贷来显示表示1,0 呢?
不过,在查询数据库时,老师要我把DBgrid中的数据改为中文
比如,数据库中有个表:[mx_table],在[mx_table]中有个字段borrow,int类型。
这个字段当为1时,表示借,为0时表示贷。现在我查询出来了,在DBgrid中是显示成数字的形式,1或0。
现在,指导老师要我把这个改了,1改成借,0改成贷。
但数据库中就是1或0啊,怎么在DBgrid中让借,贷来显示表示1,0 呢?
然后在query的onCalcField事件中写如下代码:
if query.fieldbyname('borrow').value=1 then
query.fieldbyname('calcBorrow').value:='借'
else
query.fieldbyname('calcBorrow').value:='贷';
然后在query的field列表中让borrow.visible=false;而用calcBorrow代替它显示就可以了
with Sender.DataSet do
begin
if FieldByName('borrow').AsInteger=1 then
Text:='借'
else if FieldByName('borrow').AsInteger=0 then
Text:='贷'
end;
procedure TForm1.ADOTable1xhGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
const Arr:array[0..1] of string=('借','贷');
begin
with Sender.DataSet do
begin
text:=arr[FieldByName('xh').AsInteger];
end;
end;
if (Column.FieldName = 'ISFIXED') or (Column.FieldName = 'ISMEASURE') or
(Column.FieldName = 'ISIMPORT') or (Column.FieldName = 'ISUNDER') then
begin
if Column.Field.Value <> NULL then
begin
if Column.Field.Value = '1' then
DBGrid_Detail.Canvas.TextOut(Rect.Left+2,Rect.Top+2,'是')
else
DBGrid_Detail.Canvas.TextOut(Rect.Left+2,Rect.Top+2,'否');
end;
end;
DBGrid_Detail.DefaultDrawColumnCell(Rect, DataCol, Column, State);
if (Column.FieldName = 'ISFIXED') or (Column.FieldName = 'ISMEASURE') or
(Column.FieldName = 'ISIMPORT') or (Column.FieldName = 'ISUNDER') then
begin
if Column.Field.Value <> NULL then
begin
if Column.Field.Value = '1' then
DBGrid_Detail.Canvas.TextOut(Rect.Left+2,Rect.Top+2,'是')
else
DBGrid_Detail.Canvas.TextOut(Rect.Left+2,Rect.Top+2,'否');
end;
end;