在DBGrid中怎样实现:
1、点击某个单元格后出现下拉列表(列表中的内容来自Table1的Field1字段)
2、点击某个单元格后弹出Form2,在Form2的ComboBox1中选择值之后,单元格的内容为该值
3、单元格的值只能通过上述方法得到,直接输入无效

解决方案 »

  1.   

    绑定控件到DBGrid就可以了,最好用第三方的dbgrid。
    如果非要用TDBGrid,参考http://delphi.about.com/od/usedbvcl/l/aa081903a.htm
      

  2.   

    1.写在formshow
    with Dbgrid1,Dbgrid1.DataSource.DataSet do
      begin
        SelectedField := FieldByName('下拉的字段');
        with Columns[SelectedIndex] do
        with PickList do
        begin
         Clear;
         while not table1.eof do
         begin
           Add(field1.值);
           table1.next;
         end;
         AutoDropDown := true;
        end;
      end;
    2.在form1的单元 中,写公共函数 如:function ReturnValue :string;
    function ReturnValue :string;
    begin
      result := '';
      form1 := Tform1.Create(nil);
      with TForm1 do
      try
        if showModal=mrok then
           result := form1.某值
      finally
        FreeAndNil(form1);
      end;
    end;在dbgrid的onKeypress事件里
    procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
    begin
      with TDBGrid(Sender) do
      begin
        if SelectedField.FieldName = 'abc' then
           SelectedField.AsString := ReturnValue;
      end;
    end;
    3.设为只读试试吧
      

  3.   

    ehlib这个控件全能做到,里面的demo说得很清楚了.BTW:ehlib的ehDBGrid已经成为我开发不可少的工具啦!
      

  4.   

    我用的是Dxdbgrid控件,可以在下拉框中显示一个表的内容,比如:点击后会弹出一个列表,里面放有一个表的内容,方便
      

  5.   

    把dbgrid的options的dgediting设为false可以了吧?
      

  6.   

    第三个问题:
        把dbgrid的options的dgediting设为false可以了吧?
      

  7.   

    把dbgrid的options的dgediting设为false,那所有列都没法编辑了,我是要有的列可以直接输入,有的列用第1、2种方法输入。
      

  8.   

    with Dbgrid1,Dbgrid1.DataSource.DataSet do
      begin
        SelectedField := FieldByName('下拉的字段');
        with Columns[SelectedIndex] do
        with PickList do
        begin
         Clear;
         while not table1.eof do
         begin
           Add(field1.值);
           table1.next;
         end;
         AutoDropDown := true;
        end;
      end;__________________________________________________________
    这段代码太乱了,能不能写清楚点(不要用with)。
      

  9.   

    强烈推荐DBGRIDEH,我不会用DBGRID,功能太少,简直没发用
      

  10.   

    qizhanfeng(glacier)
    好厉害,佩服!
    谢谢你的代码,以前我自己弄的时候,都是用的很罗嗦的代码实现的。