dbgrid 本身支持光标上下左右移动。
至于你的回车只需要:procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
    if key =#13 then
    tuxedoquery1.Next;
end;/*************************************/
/*1、MY TOOL:*************************/
/*2、Delphi,Oracle,Sybase,C++/C*******/
/*3、PROJECT:*************************/
/*3、Boss*****************************/
/*4、为了五星的目标希望你早点结贴*****/
/*************************************/
下为我公司中餐定购点,大家随意随意.....
巴西小吃部:13033009888
阿根廷川味:13003059999
韩国料理城:3663371
英格兰拉面:3635476
西班牙火锅:3661693
中国大排挡:13956948888

解决方案 »

  1.   

    clientdataset.beforeinsert 就是进入添加状态之前这个时候你还没有进入添加状态。你可以在这个时候做一些动作,甚至是终止添加。
    比如你在onbeforeinsert的代码中加上 abort语句可以试试效果,而after是之后了,比如你在afterdelete之后要更改某个计数器或刷新某个query就在这儿做。
    关于dbgrid的移动,一般光标上下移动就自动移动的。如果要用回车移动那么在
    onkeypress中写
    //响应回车键
        if Key =#13 then
            if not (Sender as TDBGrid).DataSource.DataSet.Eof then
                (Sender as TDBGrid).DataSource.DataSet.Next;
    如果要响应上下键原理一样,只是改Key就行了
      

  2.   

    1。它并不知道你什么时候要insert,edit...它只是如果你在那里有代码,那么它在进行insert,edit之前先执行你那 些代码。
    2。第二个问题同上,实在不行,你可在dbgrid中的onkeyup中对方向键,回车键进行控制。
    3。来这里是学东西,没什么笨不笨的。
      

  3.   

    1。它并不知道你什么时候要insert,edit...它只是如果你在那里有代码,那么它在进行insert,edit之前先执行你那 些代码。
    2。第二个问题同上,实在不行,你可在dbgrid中的onkeyup中对方向键,回车键进行控制。
    3。来这里是学东西,没什么笨不笨的。
      

  4.   

    关于回车要判断:
    procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
    begin
        if key =#13 then
        begin
        if not tuxedoquery1.Eof then
        tuxedoquery1.Next
        else
        tuxedoquery1.First;
        end;end;
    /*************************************/
    /*1、MY TOOL:*************************/
    /*2、Delphi,Oracle,Sybase,C++/C*******/
    /*3、PROJECT:*************************/
    /*3、Boss*****************************/
    /*4、为了五星的目标希望你早点结贴*****/
    /*************************************/
    下为我公司中餐定购点,大家随意随意.....
    巴西小吃部:13033009888
    阿根廷川味:13003059999
    韩国料理城:3663371
    英格兰拉面:3635476
    西班牙火锅:3661693
    中国大排挡:13956948888
      

  5.   

    clientdataset.insert和beforeinsert事件之间的关系?能给点代码看看?
      

  6.   

    如何使用回车代替tab,但到行尾换行?
      

  7.   

    dbgrid有一个相应回车的属性要去掉Options中的dgtab去掉
    然后将我上面的代码改成下面形式
        if Key =#13 then
           if (Sender as TDBGrid).SelectedIndex < (Sender as TDBGrid).Columns.Count then
                (Sender as TDBGrid).SelectedIndex:= (Sender as TDBGrid).SelectedIndex+1
    else
          
    if not (Sender as TDBGrid).DataSource.DataSet.Eof then
                (Sender as TDBGrid).DataSource.DataSet.Next;
      

  8.   

    fengerfeifei(风儿飞飞):
    我这样做了回车可代替tab,但不换行[这一句(Sender as TDBGrid).DataSource.DataSet.Next;好像没发挥作用],另外,移动向下光标件到最后一条记录,会自动添加一条空白记录,如何不让他这样做?
      

  9.   

    if Key =#13 then
           if (Sender as TDBGrid).SelectedIndex < (Sender as TDBGrid).Columns.Count then
                (Sender as TDBGrid).SelectedIndex:= (Sender as TDBGrid).SelectedIndex+1
    else
    begin      
    if not (Sender as TDBGrid).DataSource.DataSet.Eof then
                (Sender as TDBGrid).DataSource.DataSet.Next;
                (Sender as TDBGrid).SelectedIndex =1;
    end;你使用也要动动脑筋想想道理嘛,至于自动添加一条空白记录很简单,只是在我上面的语句中加一条语句就行了。自己试试。