效果图如下
http://photo.163.com/mypic.php?pid=98943795&_dir=%2F5801764就是速达里的表格。请问高手们,用DBGRID可以做得到吗??
请把整个思路说说,谢谢!!!!!!!
显示现金时,怎样把一个个数字放到小格子里去???????我是新手,问题特多,谢谢各位。

解决方案 »

  1.   

    TsncCurrency 货币编辑控件 V1.1http://www.delphibox.com/article.asp?articleid=118TsncCurrency是作者在使用DELPHI开发一个C/S版财务系统的过程中,为了解决凭证的金额输入照顾国人使用习惯的问题而诞生的。由于在国内有限的DELPHI控件资源中遍寻不获,而RXLIB、LMD、VG、AHM等国外著名控件集专门为国人定制的可能性又不大,于是,在研究了国内大型财务厂商系统的实现方式后,决定自行开发一个功能上完全达到或超越现有实现方式的货币编辑控件,给国内的众多软件开发者也提供一个完全实现同样专业化、或更COOL的财务凭证使用界面的方式。///看不到楼主的图片,不知楼主是不是要这个.....
      

  2.   

    对不起啊。是这里http://photo.163.com/openalbum.php?username=zong2046在temp目录里。谢谢各位。
      

  3.   

    这不就是一般的网格吗
    三方控件应该很好实现的
    TADVstringgrid
      

  4.   

    马上下了一个TADVstringGrid,安装不了,找不了advgrid.pas。怎么办啊
      

  5.   

    TsncCurrency 货币编辑控件 V1.1http://www.delphibox.com/article.asp?articleid=118
    http://downloads.2ccc.com/vcl/miscellaneous/sncCurrency.gif
      

  6.   

    //写一个玩玩~~
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    var
      I, J, T: Integer;
      C: Char;
      S: string;
      vRect: TRect;
    const
      cCnNumber: array['0'..'9'] of string =
    ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
    begin
      if not Odd(TDBGrid(Sender).DataSource.DataSet.RecNo) then
      begin
        TDBGrid(Sender).Canvas.Brush.Color := $cfcfff;
        TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
      end;  if not SameText(Column.FieldName, 'Salary') then Exit;
      if not Assigned(Column.Field) then Exit;  ///////Begin 处理成全角数字
      S := Format('%.2f', [Column.Field.AsFloat]);
      for I := Length(S) downto 1 do
      begin
        C := S[I];
        if C = '.' then
          Delete(S, I, 1)
        else
        begin
          Delete(S, I, 1);
          Insert(cCnNumber[C], S, I);
        end;
      end;
      S := '¥' + S;
      ///////End 处理成全角数字  with TDBGrid(Sender).Canvas do
      begin
        ///////Begin 写文字
        vRect := Rect;
        FillRect(Rect);
        vRect.Right := vRect.Right - 4;
        vRect.Top := vRect.Top + 2;
        DrawText(Handle, PChar(S), Length(S), vRect, DT_RIGHT or DT_VCENTER);
        ///////End 写文字    ///////Begin 画线条
        J := Rect.Right - Rect.Left; //计算宽度
        T := TextWidth('0');
        I := 1;
        while I * T + T div 2 < J do
        begin
          if I = 2 then
            Pen.Color := clRed
          else begin
            if (I > 3) and ((I - 2) mod 3 = 0) then
              Pen.Color := clBlue
            else Pen.Color := clGreen;
          end;
          MoveTo(Rect.Right - I * T - T div 2, Rect.Top);
          LineTo(Rect.Right - I * T - T div 2, Rect.Bottom);
          Inc(I);
        end;
        ///////End 画线条
      end;
    end;
      

  7.   

    http://www.playicq.com/dispdocnew.php?id=22849
      

  8.   

    谢谢大家,特别是zswang专家门诊。谢谢。
      

  9.   

    邮件发不过去,mailbox unavailable.
      

  10.   

    if key = char(13) then
    edit2.SetFocus;这两行代码为什么没有效啊