我想在程序里实现这样的功能:从combobox下拉列表框里选中一个值,然后赋给一个memo,我用的是click事件。当鼠标中键滚动时,也触发了click事件,这时combobox里的值改变,memo里的值也跟着改变。有什么办法只让他从下拉列表框选择时,memo才改变呀?我的代码是这样的
procedure TForm2.TCombo7Click(Sender: TObject);
begin
   if trim(dbmemo1.Text)='' then dbmemo1.Text:=tcombo7.Text
   else dbmemo1.Text:=dbmemo1.Text + #13#10+ tcombo7.Text;
end;

解决方案 »

  1.   

    onclick都出现那问题,onchange当然也会出现了
      

  2.   

    combobox的style属性改成csDropDownList,然后在onchange中写
      

  3.   

    改成csDropDownList,只是不让用户在comboxbox里输入而已,并不能解决我的问题呀
    当鼠标中键滚动时,还是会触发onclick或onchange事件,combobox的内荣仍在改变,memo也会跟着改变
      

  4.   

    如果是一定要用鼠标点击之后才能往dbmemo中添加数据的话,可以采用下面的方法,就是麻烦了点。因为鼠标点击combobox会产生combobox的onDropDown和oncloseup事件,所以从这上面下文章。先设一个全局变量k  k:integer;
    然后在combobox的OnDropDown事件中添加语句:k:=1;
    在combobox的OnCloseUp事件中添加语句:k:=k+1;//这样一次点击之后,k就变成2了
    最后在combobox的OnClick事件中添加语句:procedure TForm1.tcombo7Click(Sender: TObject);
    begin
    if k=2 then
    begin
    if trim(dbmemo1.Text)='' then dbmemo1.Text:=tcombo7.Text
      else dbmemo1.Text:=dbmemo1.Text + #13#10+ tcombo7.Text;
      k:=1;
    end;
    end;以上代码经过测试,没有错误
      

  5.   

    把鼠标滚轮事件屏了
    procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
      WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
    begin
      Handled   :=   True;
    end;
      

  6.   


    下手这么重啊,如果这样做,万一界面上还有个dbgrid,估计用起来就麻烦了
      

  7.   

    procedure TForm1.ComboBox1DropDown(Sender: TObject);
    begin
      ComboBox1.Hint := ComboBox1.Text;
    end;procedure TForm1.ComboBox1CloseUp(Sender: TObject);
    begin
      if ComboBox1.Hint <> ComboBox1.Text then
        Memo1.Lines.Add(ComboBox1.Text);
    end;