在登陆窗口中,combobox显示数据库中的用户名,并用到了以下句子:
procedure TLogin.ComboBox1DropDown(Sender: TObject);
var
 i:integer;
begin
  Adoquery1.Close;
  Adoquery1.SQL.Clear;
  Adoquery1.SQL.Add('select 姓名 from 用户清单');
  Adoquery1.Open;
  while not adoquery1.Eof do
    begin
     combobox1.Items.Add(adoquery1.fieldbyname('姓名').AsString);
     adoquery1.Next;
    end;
end;
现在的问题是数据库中只有sys一个用户,但每次点击combobox都会增加一个sys用户选项,

解决方案 »

  1.   

    加上  combobox1.Items.Clear;procedure TLogin.ComboBox1DropDown(Sender: TObject);
    var
     i:integer;
    begin
      combobox1.Items.Clear;
      Adoquery1.Close;
      Adoquery1.SQL.Clear;
      Adoquery1.SQL.Add('select 姓名 from 用户清单');
      Adoquery1.Open;
      while not adoquery1.Eof do
        begin
         combobox1.Items.Add(adoquery1.fieldbyname('姓名').AsString);
         adoquery1.Next;
        end;
    end;
      

  2.   

    楼上对的 用户名下拉框  也可以不放在DropDown事件的
      

  3.   

    这是代码被重复执行多次的问题。
    建议在From.OnCreat事件中,加入上述代码。代码只执行一次。
      

  4.   

    我个人也建议 不要放在 DropDown 事件下,如确实需要请加上 combobox1.Items.Clear;
      

  5.   

    初始化用户只需要加载一次,放在OnShow 或OnCreate里面就可以了。
      

  6.   

     combobox1.Items.Clear或在OnShow 或OnCreate加载