如下代码为,如果form2的capition为 化学成份查询 以及combobox1.text为混合料厂,那么点击combobox2的时候,自动添加数据列,运行时其下拉框中并未出现数据,求其原因,代码应该没什么问题的,
procedure TForm2.ComboBox2Click(Sender: TObject);
begin
if (form2.Caption='化学成份查询') and (form2.ComboBox1.text='混合料厂') then
begin
form2.ADOQuery1.Close;
form2.ADOQuery1.SQL.Clear;
form2.ADOQuery1.SQL.Add('select distinct 牌号 from 混合料化成');
form2.ADOQuery1.Open;
form2.ComboBox2.Clear;
while not form2.ADOQuery1.Eof do
begin
form2.ComboBox2.Items.Add(form2.ADOQuery1.fieldbyname('牌号').AsString);
form2.ADOQuery1.Next;
end;
end
else
combobox2.Clear;
end;
end.

解决方案 »

  1.   

    放到 combobox的onDropDown事件里就可以了,表示下拉时才会加载。
      

  2.   

    谢谢楼上,我把它放在COMBOBOX1的ONCHANG下也可以了,
      

  3.   

    你的问题解决了??
      我个人感觉 放到ComboBox1的OnSelect事件下做这中问题比较好
      

  4.   

    if (form2.Caption='化学成份查询') and (form2.ComboBox1.text='混合料厂') then
    begin
    form2.ADOQuery1.Close;
    form2.ADOQuery1.SQL.Clear;
    form2.ADOQuery1.SQL.Add('select distinct 牌号 from 混合料化成');
    form2.ADOQuery1.Open;
    form2.ComboBox2.Clear;
    form2.adoquery1.first;///加这句试试
    while not form2.ADOQuery1.Eof do
    begin
    form2.ComboBox2.Items.Add(form2.ADOQuery1.fieldbyname('牌号').AsString);
    form2.ADOQuery1.Next;
    end;
    end
    else
    combobox2.Clear;
    end;
      

  5.   

    onchang事件中执行比较好,还有“form2.Caption='化学成份查询'”这个判断条件建议换换。
      

  6.   

    有东西吧 只是你没combox没来得及Update吧!
      

  7.   

    onchange才不好,例如要输入10个字符,那么你就会触发10次事件。而且楼主这个还要涉及到即时查数据库,会消耗不少效率。除非是单机程序吧。
      

  8.   

    onDropDown、onchange、onselect 
    楼主,这三个事件是控制最基础的,相对来说执行的次序你搞明白了,也就OK了。combox 的onclick事件是不行的