谢谢!

解决方案 »

  1.   

    ??
    DBGRIDEH没有用过,不知是不是从DBGRID继承过来的?
    DBGRID在数据字段里设置一下,就可以在DBGRID里实现下拉选择输入……
      

  2.   

    没有过,看一下有没有Readonly属性
      

  3.   

    本来它就会吃掉Back Space啊
      

  4.   

    DBGridEh1ColEnter(Sender: TObject);
    var
      i: integer;
    begin
    添加下列字符串
      with DBGridEh1.Columns[DBGridEh1.SelectedIndex] do
      begin
        if UpperCase(FieldName) = UpperCase('memberlevel') then
        begin
          PickList.Clear;
          for i := 0 to High(DiscountbyMark) do
            PickList.Add(DiscountbyMark[i].Level);
        end;
      end;
    不能写,只能选
    DBGridEh1KeyPress(Sender: TObject;
      var Key: Char);
    begin
      inherited;
      with DBGridEh1 do
      begin
        if UpperCase(SelectedField.FieldName) = UpperCase('memberlevel') then
          Key := #0;
      end;
      

  5.   

    To:  tanlijun37(天下)
    我照您的代码改了,可有些键仍能生效,比如:Shift+方向键. 在内容被全选中的状态下,DELETE键也会生效,于是就可以把格子内容清空.提出这个问题的原因在于,如果用户不从下拉列表中选取,而是手工键入,那么当他把格子里的内容全部清光后离开格子,就会引发一个"无名的错误",这个错误并非该栏位不能接收null值而引起的,因为定义栏位时就允许null.
    各位,请赐高招~,万分感谢!
      

  6.   

    将要输入的字段设置成查看字段,就可以在DBGRID里直接下拉选择,不必编写任何程序……
      

  7.   

    本来就是lookUp型的,但用户还是可以编辑那个位置的字符,所以才有此问题出来.
      

  8.   

    在上面的程序中指定相应控件的属性值为只读不过,你可以试试DBGRID的COLUMNS的属性置为只读试试……
      

  9.   

    DBGRIDEH,不好用,用别的非数据感应控件吧。