请问如何在dbgrid中将1列做成下拉列表的形式,请高手指点!

解决方案 »

  1.   


    col 的buttonStyle 設為cbsauto
    在PickList 里加上你的下拉的東東
    就可以了
      

  2.   

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
      //ShowMessage('in');
      if (gdFocused in State) then
      begin    if (DBGrid1.SelectedField.FieldName = DBComboBox1.DataField ) then
        begin      DBComboBox1.Left := Rect.Left + DBGrid1.Left;
          DBComboBox1.Top := Rect.Top + DBGrid1.top;
          DBComboBox1.Width := Rect.Right - Rect.Left;
          DBComboBox1.Height := Rect.Bottom - Rect.Top;
          DBComboBox1.Visible := True;
        end;
      end;
    end;
      

  3.   

    可以用LOOKUP字段來做!定制了一個LOOKUP字段後!把該字段指向另一個數據集!
    就能達到目的!
      

  4.   

    初始化combobox1的visible为falseprocedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
      if gdfocused in state then
      begin
        if column.FieldName='Zh' then//你要让combobox显示的那列的字段名
        begin
          form1.ComboBox1.Left:=rect.Left+form1.DBGrid1.Left;
          form1.ComboBox1.Top:=rect.Top+form1.DBGrid1.Top;
          form1.ComboBox1.Width:=rect.Right-rect.Left;
          form1.ComboBox1.Height:=rect.Bottom-rect.Top;
          form1.ComboBox1.Visible:=true;
        end;
      end;
    end;
      

  5.   

    picklist;
    需要那么复杂吗?
    楼上的我在100例子导航里看到了一模一样的东西。。呵呵
      

  6.   

    非常感谢大家,可能是我没说清楚,我在dbgrid里是要做数据录入,有1张表里放的是包装单位信息
    我想让下拉列表连到这张表上,用户在输入的时候可以选择,请问 sousouwjh(sousouwjh)能说清楚点吗,LOOKUP字段杂做
      

  7.   

    說清楚嗎?就是在QUERY的字段編緝器裡添加一新字段!
    在秀出的窗口選擇為LOOKUP,LOOKDATASET選擇你需要的數據集就是你另一個表d
    的QUERY,LOOKUPRESULTFIELD是你希望返回的字段!LOOKUPKEYFIELD是你
    當前表與LOOKUP對應的關聯字段!
    就這樣!如果是DBGRIDEH這種控件還能做到下拉秀出多個字段呢!不過它就有很詳細的DEMO你看呢!呵呵
      

  8.   

    www.xmflyfish.com/awind/dbgrid+.rar,里面例子中第二个字段是你所要的,看一下