本人现在做一个小需求,就是读取xml文件的内容,然后显示在grid中,问题主要是如何在grid中显示一个打勾或者问号呢?
通过clientdataset,xmltransformprovider,datasource,进行连接,如果想要在clientdataset增加一个字段,并直接对这个字段赋值来达到这个效果的话,又该怎么做呢?
万能的delphi帝来救救我把

解决方案 »

  1.   

    你用什么grid,用dx或cx系列的grid吧,或者tms的都行,可以设置一列为check列
      

  2.   


    procedure TForm1.dbg1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    const
      DrawStyle: array[Boolean] of Integer = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK
        or DFCS_CHECKED);
    var
      r: TRect;
    begin
      Inc(r.Left, 2);
      Inc(r.Top, 2);
      Dec(r.Right, 2);
      Dec(r.Bottom, 2);
      DrawFrameControl(TDBGrid(Sender).Canvas.Handle, r, DFC_BUTTON,
        DrawStyle[Boolean(IfThen(Column.Field.AsBoolean, 1, 0))]);
    end;我用的画复选框的,如果需要还可以改一下画单选按钮
      

  3.   

    回2楼,我用的是DBgrid的
    回3楼,需求是这么要求的,有一个status字段,如果为1则用打勾表示,如果为2则用问号或其他表示
      

  4.   

    如果你不想自己增加代码来实现此效果的话,你就用dxdbgrid吧,省你大事了,而且样式很多
      

  5.   

    在字段的OnGetText事件里写:procedure TForm1.ds1FieldTestGetText(Sender: TField; var Text: String;
      DisplayText: Boolean);
    begin
      if Sender.AsInteger=1 then
        Text:='√'
      else
        Text:='?';
    end;
      

  6.   

    那如果用dxdbgrid的话可以怎么操作呢,能否说详细点,我是个菜菜,呵呵,就请大虾多打几个字咯
      

  7.   

    还有些问题要问啊,可以对dbgrid或是dxdbgrid控制显示记录数吗,比如一页显示20条记录或是40条之类的,
      

  8.   

    这个好像需要通过代码实现吧
    select top 10 * from czjl where flag>0 order by time_qy desc
      

  9.   

    就是如何控制dxDBGRID的显示行数怎么实现象翻页一样的功能
      

  10.   


    首先得出记录总条数为m,每页显示行数为n,则得出总页数为pagei:=m div n;
    j:=m mod n;
    if j>0 then
      i:=i+1;
    page:=i;通过下面代码,获取当前页显示内容,当前页用变量k表示
        self.ADOQuery4.Close;
        self.ADOQuery4.Connection:=self.ADOConnection1;
        self.ADOQuery4.SQL.Clear;
        Self.ADOQuery4.SQL.Add('select top n * from czjl where flag>0');
        Self.ADOQuery4.SQL.Add(' and time_qy not in (select top '+inttostr(k-1)*n+' time_qy');
        self.ADOQuery4.SQL.Add(' from czjl where flag>0 order by time_qy desc) order by time_qy desc');
        Self.ADOQuery4.Open;