我以前做的毕业设计是没有问题的
不过,在查询数据库时,老师要我把DBgrid中的数据改为中文
比如,数据库中有个表:[mx_table],在[mx_table]中有个字段borrow,int类型。
这个字段当为1时,表示借,为0时表示贷。现在我查询出来了,在DBgrid中是显示成数字的形式,1或0。
现在,指导老师要我把这个改了,1改成借,0改成贷。
但数据库中就是1或0啊,怎么在DBgrid中让借,贷来显示表示1,0 呢?

解决方案 »

  1.   

    你这样做,在连接这个表的query组件中添加一个计算字段,假设名称为calcBorrow,类型为string;
    然后在query的onCalcField事件中写如下代码:
    if query.fieldbyname('borrow').value=1 then
       query.fieldbyname('calcBorrow').value:='借'
    else
       query.fieldbyname('calcBorrow').value:='贷';
    然后在query的field列表中让borrow.visible=false;而用calcBorrow代替它显示就可以了
      

  2.   

    marf_cn(吗啡) 的没问题
      

  3.   

    也可以在DBGrid中新添一空列,根据borrow值,画上借,贷等
      

  4.   

    把borrow换成布尔型,True为借,False为贷,然后(query.fieldbyname('borrow') as TBooleanField).DisplayValues ='借;贷';
      

  5.   

    在数据集的字段borrow的OnGetText事件中写
       with Sender.DataSet do
       begin
          if FieldByName('borrow').AsInteger=1 then
             Text:='借'
          else if FieldByName('borrow').AsInteger=0 then
             Text:='贷'
       end;
      

  6.   

    在数据集的字段borrow的OnGetText事件中写
    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;
     
      

  7.   

    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;
      

  8.   

    ysycrazy(风中狂) 说得很正确,在字段的 OnGetText 事件中处理。
      

  9.   

    就用DBGrid的自画功能,在其自画事件中写
    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;