在Tedit的onchange事件中,showmodal一个窗口,并传递回一个参数。
但是在中文输入时,如果一次输入的中文超过一个字,就会连续发生多次onchange事件,会生成多个showmodal窗口。要求在这样的情况下,只能产生一个showmodal窗口。
我用assigned函数试过了,第一次输入中文的时候,可以弹出一个窗口,以后如果再输入中文就再也不弹出窗口了。
请大侠们帮忙呀,我想要实现的功能是,一次输入多个中文字符时,只弹出一个窗口,如果分开多次输入,每输入一次中文,就弹出一个窗口。

解决方案 »

  1.   

    一次输入多个中文字符时,只弹出一个窗口://这一次指什么意思?连续的输入中文直到你停下来还是光标离开Tedit?
    如果分开多次输入,每输入一次中文,就弹出一个窗口。//分开多次,这多次是什么意思??是不是我输入中文,然后光标离开,如果再输入中文时,即获得焦点,然后输入中文时,再弹出窗口?
    如果是的话,那么你可以判断Tedit是否获得了焦点,如果获得了,则把公共变量flag设置为:true,然后在onchange事件中:
    if flag then
      弹了窗口,然后把flat:=false;
    避免一次得到焦点,多次输入而多次弹了窗口,不知你明白了没有;
      

  2.   

    可能是我说的不清楚,焦点一直是在Tedit上的
    Tedit的内容如果改变,将触发onchange事件,弹出一个showmodal窗口
    比如输入词组"中国",如果分成"中”和“国”输入,将分别触发两次onchange事件。也就是说输入“中”后,弹出一个showmodal窗口,做完处理之后,再输入“国”字,弹出一个showmodal窗口。而如果你一次输入一个词组“中国”,实际上是输入了两个字,将连续触发两次onchange事件,也就是连续弹出了两个showmodal窗口。这样传递变量回主窗口的时候,你虽然对两个showmodal窗口的变量赋了不同的值,但是传递给主窗口的变量确是同一个值,所以我希望在这样的情况下,只弹出一个showmodal窗口。上面jinjazz提到用keydown,keypress,但是因为我要对输入的中文的unicode码进行分析,所以无法使用。
      

  3.   

    if not assigned(弹出窗口) or not 弹出窗口.Visible then
      // 弹出