我在主窗体的onpaint事件中弹出一个密码输入框,但这个框移动时候会出现多个框,这个怎么办?

解决方案 »

  1.   

    应该在主窗口中定义一个全局变量
    var
      IsLogin:Boolean;   //是否已登录然后在OnPaint中
    if not IsLogin then 
      begin  
        frmLogin.Showmodal;
        IsLogin:=True;
      end;
    这样就不会总是出来那个登录窗口了
      

  2.   

    OnPaint事件不是做这种用途的。顾名思义,那是给你绘制界面用的。
    在OnShow中做,OnActivate也行。
      

  3.   

    同意 miky
    你拖动窗体时,Form会触发OnPaint事件;
    最好不要在你的窗体事件中加这个功能,在你的公共类中写方法进行创建、调用;
      

  4.   

    试试这个,OnPaint事件加
    Invalidate;
      

  5.   

    子窗体的OnPaint事件会触发主Form的ONPAINT事件的,如果非要这样做则可以用OnPaint事件发生的次数来判定,一般FORM创建后两次触发ONPAINT事件,设一个变量I,当I大于2时不再响应调用密码输入框事件,除非是你重新I变量清零,但这期间一定要响应ONPAINT事件的Inherited;
      

  6.   

    OnPaint是画窗体的,只要你的窗体有变化,比如说被弹出的对话框覆盖了一部分等等,都会触发的,象miky(miky)说的,写到onshow事件里吧