我想通过dbgrid往数据库输入信息,但是我不想打开窗口的时候在dbgrid中显示现在数据库的数据,我只想显示一个空白的dbgrid,然后输入数据,保存到数据库中。不知道这个应该怎么实现
还有我在dbgrid中不想用tab来切换光标点,想用回车来实现。请问怎么写?
谢谢帮忙。

解决方案 »

  1.   

    SQL 用 select * from table where 1=2
    如果我的用户要我改成回车,我和它说TAB和回车是一样的,都是一个手指按一下,习惯就好了。
      

  2.   

    Bitter_fish(苦鱼)兄一样的法子,就是设一个能选择为空的where条件;第二个问题搜一下,很多多贴子都可以帮你
      

  3.   

    1. 这个很简单,你可以参考内存表的资料,在内存中建立一个和你实际表结构相同的表,连接到GBGrid,输入完了后再一次写入到实际表中,有点类似缓存更新。2. 在DBGrid的OnKerPress里面写上
      if ord(Key) = VK_RETURN then
        (Sender as TDBGridEh).Perform(WM_KEYDOWN, VK_TAB, 0);3. 下次问问题别这么吝啬分。20分太少了,很多人都懒得看。
      

  4.   

    在DBGrid的OnKerPress里面写上
      if ord(Key) = VK_RETURN then
        (Sender as TDBGridEh).Perform(WM_KEYDOWN, VK_TAB, 0);
      

  5.   

    第一问同意Bitter_fish
    第二问的答案是引用贴子很不错可以试试,而且可以到行末换行
    procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
    var
      I: Integer;
    begin
      case Key of
        #13: begin
          key:=#0;
          I := TDBGrid(Sender).SelectedIndex;
          if I + 1 < TDBGrid(Sender).Columns.Count then
            Inc(I)
          else I := 0;
          while (I <> TDBGrid(Sender).SelectedIndex) and //判断列是不是只读或者隐藏了
           ((not TDBGrid(Sender).Columns[I].Visible) or
           TDBGrid(Sender).Columns[I].ReadOnly) do
          begin
            if I + 1 < TDBGrid(Sender).Columns.Count then //判断当前列向后数第二列到没到行末
              Inc(I)
            else I := 0;
          end;
          if (I <= TDBGrid(Sender).SelectedIndex) and //判断到没到行么i=0 到了,i>0 没到
            Assigned(TDBGrid(Sender).DataSource) and
            Assigned(TDBGrid(Sender).DataSource.DataSet) then
            begin
            if  TDBGrid(Sender).DataSource.DataSet.eof then //如果到了末尾增加一条记录
                 TDBGrid(Sender).DataSource.DataSet.append
            else
            TDBGrid(Sender).DataSource.DataSet.Next;
            end;
          TDBGrid(Sender).SelectedIndex := I;     //指定移到的位置
        end;
      end;
    end;