如附件所示,请教高手如何实现grid左侧状态栏加入数据序号的问题,很急,盼伸出援手!!

解决方案 »

  1.   

    用stringgrid
    var
      I:Integer;
    begin
      StringGrid1.Cells[0,0]:='行号';
      for I:=1 to 3 do
      begin
        StringGrid1.Cells[0,I]:=IntToStr( I );
      end;
    end;
      

  2.   

    嗯,如果是advstringgrid,2楼的可以了就
      

  3.   

    我是用dbgrid来实现数据查询结果显示的,是动态的加载行号列的,如果用stringgrid实现数据库就太麻烦了,本来就是一个锦上添花的功能,如果为了这个放弃数据库写入的方便,有些本末倒置了吧:)
      

  4.   

    那你得改写一下数据库控件了,好像dbgrid本身不支持
      

  5.   

    拷贝一下VCL里的DBGRIDs.PAS,然后替换一下所有TCustomDBGrid的名字和TDBGrid的名字为你的名字,最后修改一下procedure TCustomDBGrid.DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState);这个就可以了。
      

  6.   

    有没有别的什么简单点的办法呢?
    比如用什么别的控件,dxdbgrid?
    有高手给个详细点的说明呢?
    谢谢了
      

  7.   

    给你个dbgrid的
     with   (Sender   as   TDBGrid).DataSource.DataSet   do    
          begin
              if   DataCol   =   0   then   
              begin
              if recno<>-1 then
              begin
                  if   not   (state   in   [dsEdit,   dsInsert])   then
                      (Sender   as   TDBGrid).Canvas.TextRect(Rect,   Rect.Left   +   15,   Rect.Top   +
                          2,
                          IntToStr(Recno));
              end;
              end;
      

  8.   

    真的没有人要分数啊?
    我的要求也不算过分吧,但是真的不知道怎么在dbgrid最左边灰色的状态区域加入序号和列名,急,急,急,求助大侠!
      

  9.   

    dbgrid好像真的做不到,你看见的图片中的效果不一定是dbgrid做的,很可能是其他的非db的控件,如果用dxdbgrid的话,自己写drawcell事件就应该可以了
      

  10.   

    hhnick
    dxdbgrid.drawcell具体应该怎么实现啊?麻烦写详细一点:)
      

  11.   

    图片中的效果应该是stringgrid实现的吧,stringgrid可以将固定几列,这样在做行选的时候,固定列是不被选中的,
    dbgrid没有这种属性,dxdbgrid也不行,
      

  12.   

    用stringgrid呀,stringgrid可以fix column,当然数据必须手动添加
      

  13.   

    procedure TFrmInfoBase.cxGrid1DBTableView1CustomDrawIndicatorCell(
      Sender: TcxGridTableView; ACanvas: TcxCanvas;
      AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean);
    var   {第一列加上顺序号}
      FValue:   string;
      FBounds:   TRect;
    begin
      FBounds := AViewInfo.Bounds;
      if (AViewInfo is TcxGridIndicatorRowItemViewInfo) then
      begin
        ACanvas.FillRect(FBounds);
        ACanvas.DrawComplexFrame(FBounds,clBlack,clBlack,[bBottom,bLeft,bRight],1);
        FValue :=IntToStr(TcxGridIndicatorRowItemViewInfo(AViewInfo).GridRecord.Index+1);
        InflateRect(FBounds,-3,-2);   //Platform   specific.   May   not   work   on   Linux.
        ACanvas.Font.Color := clBlack;
        ACanvas.Brush.Style := bsClear;
        ACanvas.DrawText(FValue,FBounds,cxAlignCenter or cxAlignTop);
        ADone := True;
      end;
    end;
      

  14.   

    家一个模板列<%#Dacontainer.DataIndex+1%>
      

  15.   

    DBGridEH控件,optionsEh--》dghShowRecNo = true