如何用语句来更改grid中的显示字段(displaylabel)?

解决方案 »

  1.   

    select * from tb_name field1 as 'field1_name',field2 as 'field1_name',....
      

  2.   

    改变字段显示内容写DBGrid的OnDrawColumnCell事件。
    procedure TPersonalForm.DBGrid2DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
      If gdSelected In State then
       begin
         DBGrid2.Canvas.Brush.Color := clMoneyGreen;
         DBGrid2.Canvas.Font.Color := clRed;
      end
      else
        DBGrid2.Canvas.Brush.Color := clWhite;
      DBGrid2.DefaultDrawColumnCell(Rect, DataCol, Column, State);
      If (Column.FieldName='Money') Or (Column.FieldName='Cash') Or (Column.FieldName='Price') Or (Column.FieldName='Leave') then
      begin
        With DBGrid2.Canvas do
        begin
          FillRect(Rect);
          TextRect(Rect,Rect.Left,Rect.Top,Format('%m',[Column.Field.AsFloat]));
        end;
      end;
    end;
      

  3.   

    改变显示标题。
      For i:;=0 to DBGrid2.Columns.Count-1 do
      begin
        DBGrid2.Columns.Items[i].Title:=ColName;
      end;
      

  4.   

    select * from tb_name field1 as 中文1',field2 as '中文2',....
      

  5.   

    改变字段显示内容写DBGrid的OnDrawColumnCell事件。
    procedure TPersonalForm.DBGrid2DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
      If gdSelected In State then  //改变选中行的显示颜色
       begin
         DBGrid2.Canvas.Brush.Color := clMoneyGreen;  //使Grid的背景色为绿色
         DBGrid2.Canvas.Font.Color := clRed;//前景色为红色
      end
      else
        DBGrid2.Canvas.Brush.Color := clWhite;
      DBGrid2.DefaultDrawColumnCell(Rect, DataCol, Column, State);
      //改变指定字段的显示内容。
      If (Column.FieldName='Money') Or (Column.FieldName='Cash') Or (Column.FieldName='Price') Or (Column.FieldName='Leave') then
      begin
        With DBGrid2.Canvas do
        begin
          FillRect(Rect); //清除原来的内容
         //写新内容
          TextRect(Rect,Rect.Left,Rect.Top,Format('%m',[Column.Field.AsFloat]));
        end;
      end;
    end;
      

  6.   

    如果按照下面这样写的话:
    For i:;=0 to DBGrid2.Columns.Count-1 do
      begin
        DBGrid2.Columns.Items[i].Title:=ColName;
      end;
    会出现数据类型不匹配的错误:我把"colname"换成了具体的中文,但中文的类型是string,而title的类型是:tcolumntitle
      

  7.   

    对不起,写错了,应该是:
    For i:;=0 to DBGrid2.Columns.Count-1 do
      begin
        DBGrid2.Columns.Items[i].Title.Caption:=ColName;
      end;