在dbgrid中,要把一列数据(比如:密码)全部用******来显示,请问各位行家该如何做?

解决方案 »

  1.   

    在select的时候先做处理取得******列的值,类似select *,**** as showpass from table。
    显示的时候绑定列showpass。
      

  2.   

    dbgrid的数据直接联接到数据源,而不是取query的数据,因此你的方法好象不太对,我也想到过这种方法。
      

  3.   

    写DBGrid的OnDrawColumnCell事件,示例如下:
    procedure TSaleQueryForm.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
      If (Column.FieldName='Money') Or (Column.FieldName='Cash') Or (Column.FieldName='Price') Or (Column.FieldName='Leave') then
      begin
        With DBGrid1.Canvas do
        begin
          FillRect(Rect);
          TextRect(Rect,Rect.Left,Rect.Top,Format('%m',[Column.Field.AsFloat]));
        end;
      end;
    end;