呵呵,老兄,用onchange可以的,当用不管用鼠标,还是键盘操作数据,只要数据一变化,它就会触发该事件。怎么不可以的。

解决方案 »

  1.   

    那就在onclick里写呀, showmessage(combobox1.Items.Strings[combobox1.itemindex])
      

  2.   

    OnSelect 事件
    procedure TForm1.ComboBox1Select(Sender: TObject);
    begin
         edit1.Text := combobox1.Text;
    end;
      

  3.   

    OnCloseUp事件
     Combobox1.Text:=Format('%s --',[Combobox1.Text]);
      

  4.   

    还是在onchange中来行稳一点。
      

  5.   

    各位兄弟的解答各具特色,在下先表示感谢。各位的方案俺一一试过,无论是onClick、onCloseUp 还是 onSelect,都不行,都无法在选择Item之后,动态的修改ComboBox的Text属性。onChange事件似乎可行,但用户每次在ComboBox的文本框中输入文本的时候,……全乱了!大家不妨试一试,是否真的如此?
    俺现在只好采用的是onExit事件,控件失去焦点后,改变其Text属性!难道非得如此吗?大家再帮忙想一想,其实这种情况是经常遇到的。再次多谢!
      

  6.   

    田凯?设置一变量flag,来判断,当数据改变时是否有,键盘的输入,如果有则当失去焦点的时候进行格式化,否则立即进行格式化!
      

  7.   

    要是格式化的文本是用函数搞定的,还好一些,
    要不用户录入的时候,我也不知道应该变成什么呀,
    在ONchange中用API
    SETWINDOWTEXT,试一试,
    >输入文本的时候,……全乱了!
    我想是因为你的函数不能接受中间改变的字符
      

  8.   

    为什么非得在ComboBox文本框中显示内容,加一个TEdit之类的不行吗?
    让TEdit显示为格式化后的文本,修改文本的事你自己处理吧。
      

  9.   

    OnDrawItem:
    ComboBox.Canvas.FillRect(Rect);
    ComboBox.Canvas.TextOut(Rect.Left, Rect.Top, Format_Str);
      

  10.   

    又多了三个回复,在此多谢。看来有必要让大家知道我想实现的功能:
    TComboBox控件,每次用户在comboBox中输入文本(字母)的同时,程序根据输入动态的更新(从数组中获取数据)comboBox的下拉列表的内容并显示。在下拉列表中为了让用户明白每一个条目的含义,所以在每一个条目的后面加上了简单的注释。当用户使用鼠标选择下拉列表中的一个条目,或者通过键盘方向键选择相应的条目并按回车后,希望在comboBox中显示的是去掉注释的文本,大家明白吗?onClick、onSelect、onCloseUp都不行——均测试过。唯一可行的似乎就是onChange了,可是如何判断我此时是在输入呢?还是正在选择呢?再次感谢大家的帮助。即使此问题实在难以搞定,我也会把分给大家的。
      

  11.   

    嗬嗬,最重要一点是,你能不能再ComboBox里输入文字,
    若不用输入,那就可以用OnCloseUp
    若要输入,你得先处理接受输入,然后再写OnCloseUp
      

  12.   

    处理接受输入:
    你可以先用IndexOf找一下,没有再加入,然后……