我是用adoquery连的。里面的sql语句是动态的。我想在dbgrid中显示出来的记录中点一下,然后点一个删除按钮删除掉,数据库中的记录也是没有的。因为我现在点的删除并没有真正从库里删除记录,我不要这种效果。
  而且如何单击一下,然后整条记录都可以用一种颜色(如红色)显出来呢?
请各位帮我下。最好详细些,因为呵呵水平不高啊

解决方案 »

  1.   

    你说我反正没怎么明白!
    如果是删除DBGRID中的记录,可以在删除事件中用DBGRID的DATASOURCE这个例如datasource1.dataset.delete;
      

  2.   

    能详细说一下吗?行号?如何进行提取呢。我就是不知给我的那个id字段如何赋值啊
    with adoquey1 do
     begin
      close;
      sql.clear;
      sql.add('delete from ab where id=:id');
      parameters.parabyname('id').value:=
      execsql;
     end;
      

  3.   

    那你让你的按钮调用一个adoquery,让它操作数据库,然后adoquery.open
      

  4.   

    全选设置DBGrid的
    Options 
      --dgRowSelecte = true
    删除
    with DBGrid1.DataSource.DataSet do
    begin
        Delete;
    end;
      

  5.   

    改变颜色
    procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
    begin
        TDBGrid(Sender).Canvas.Font.Color:=clgreen;
        if gdSelected in state then
            SetBkColor(TDBGrid(Sender).canvas.handle,clred)
        else
            setbkcolor(TDBGrid(Sender).canvas.handle,clwhite);
        TDBGrid(Sender).Canvas.TextRect(rect,0,0,field.AsString);
        TDBGrid(Sender).Canvas.Textout(rect.Left,rect.Top,field.AsString);
    end;
    删除 取出ID列执行删除语句 然后重新打开Qry
      

  6.   

    选择行号dbgrid1.SelectedField.Value;
      

  7.   

    在DrawColumnCell事件中    if ((State = [gdSelected]) or (State = [gdSelected, gdFocused])) then
        begin
            DBGrid1.Canvas.Brush.color := clRed;
        end
        DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
      

  8.   

    呵呵,谢谢大家,我第一次上论坛发问题,就得到了大家的帮助,很是感谢呢,呵呵。问题我想解决了。因为我突然想起我把我的dbgrid中的locktype设为缓存了。呵呵,我可说怎么数据库中删不掉呢。
      

  9.   

    结帖,谢谢各位的帮助,特别是ggjj2006(国明)