在DBGRID中输入一条纪录是,在车间字段选择一个值,相应的车间小组字段值下拉框中的内容也变(车间和小组字段都在DBGRID录入)
如 选择车间字段的值为  "针车" 则 小组字段 下拉框中内容为  A
                                                       B
                                                       C
如果 选择车间字段的值为 "整型" 则 小组字段 下拉框内容为  三楼
                                                     四楼   
如果能够解决这个问题那问题2是
  如果在输入一个字段的数量则相应字段的值也能相应变化,如在DBGRID中输入字段
  "用库量" 的值则相应的字段 "采购量"(采购量字段的值=需求量字段的值-用库量字段的值)也相应的变(采购量字段不能用计算字段的)
其实两个问题的技术是一样的,高手,帮帮我,分不够,可以再加

解决方案 »

  1.   


    1.
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
      if gdfocused in state then
      begin
        if column.FieldName='Year' then
        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.Visible:=true;
        end;
      end;
      if gdfocused in state then
      begin
        if column.FieldName='Salary' then
        begin
          form1.ComboBox2.Left:=rect.Left+form1.DBGrid1.Left;
          form1.ComboBox2.Top:=rect.Top+form1.DBGrid1.Top;
          form1.ComboBox2.Width:=rect.Right-rect.Left;
          form1.ComboBox2.Visible:=true;
        end;
      end;
    end;procedure TForm1.ComboBox1Change(Sender: TObject);
    begin
      if form1.ComboBox1.Text='针车' then
      begin
        form1.ComboBox2.Items.Clear;
        form1.ComboBox2.Items.Add('A');
        form1.ComboBox2.Items.Add('B');
        form1.ComboBox2.Items.Add('B');
      end;
      if form1.ComboBox1.Text='整形' then
      begin
        form1.ComboBox2.Items.Clear;
        form1.ComboBox2.Items.Add('三楼');
        form1.ComboBox2.Items.Add('四楼');
      end;
    end;
      

  2.   

    试一试
    procedure TForm1.Table1AfterEdit(DataSet: TDataSet);
    begin
      if DBGrid1.SelectedField.FieldName='Company' AND DBGrid1.SelectedField.AsString='针车' then
      begin
        DBGrid1.Columns[3].PickList.Clear;
        DBGrid1.Columns[3].PickList.Add('A');
        DBGrid1.Columns[3].PickList.Add('B');
        DBGrid1.Columns[3].PickList.Add('C');
      end;
    end;
      

  3.   

    2.
    procedure TForm1.DBGrid2ColExit(Sender: TObject);
    var
      i:integer;
    begin
      if form1.DBGrid2.SelectedField.FieldName='Kc' then
      begin
        i:=form1.DBGrid2.SelectedRows.Count;
        form1.DBGrid2.DataSource.DataSet.Edit;
        form1.DBGrid2.DataSource.DataSet.FieldValues['cg']:=form1.DBGrid2.DataSource.DataSet.FieldValues['xq']-form1.DBGrid2.DataSource.DataSet.FieldValues['kc'];
        form1.DBGrid2.DataSource.DataSet.Post;
        form1.DBGrid2.DataSource.DataSet.Refresh;
      end;
    end;
      

  4.   

    同意lovelymelon(小人物) 的,应该可以帮你解决问题的。
    up
      

  5.   

    用DBLookupListBox1或DBLookupComboBox1