A窗体,激活模态窗体B,当B消失后,会激活什么事件呢?我使用了,如下的方法都不行procedure Tfrm_DeviceData.FormPaint(Sender: TObject);
begin
    ShowMessage('ww');
end;procedure Tfrm_DeviceData.FormActivate(Sender: TObject);
begin
   ShowMessage('ww');
end;procedure Tfrm_DeviceData.FormResize(Sender: TObject);
begin
   ShowMessage('ww');
end;
使用了上面三种方法,当模态窗体B消失,没有跳出showmessage,

解决方案 »

  1.   

    B 消失FormHide(Sender: TObject);
      

  2.   

    procedure Tfrm_DeviceData.FormPaint(Sender: TObject);
    begin
        ShowMessage('ww');
    end;procedure Tfrm_DeviceData.FormActivate(Sender: TObject);
    begin
       ShowMessage('ww');
    end;
    这些都是 B出现 激活的消息 刚好相反
      

  3.   

    这种情况你加个窗体的返回值里执行窗体的代码
    B := TB.Create(Application);
    if B.ShowModal <> mrok then
    begin
    //你关闭窗口时这里将执行
    end; 
      

  4.   

    Form2 := TForm2.Create(Application);
    if form2.showmodal <> mrNone then
    begin
        ShowMessage('aa');
    end;
      

  5.   


    procedure Tfrm_DeviceData.FormPaint(Sender: TObject);
    begin
        ShowMessage('ww');
    end;procedure Tfrm_DeviceData.FormActivate(Sender: TObject);
    begin
       ShowMessage('ww');
    end;procedure Tfrm_DeviceData.FormResize(Sender: TObject);
    begin
       ShowMessage('ww');
    end;上面是A窗体激活的代码,当B窗体消失的时候,A不是重新显示了嘛,理论上窗体应该会重绘之类的,但是没有发生上面三个事件中的一个,为什么
      

  6.   

    我有的地方一直不怎么懂,就是B是模态窗体,我把上面的一个按钮的ModelResult为MrOK,这样当我操作按钮不符合条件的时候,我只要点击OK按钮,不管你前面的条件符合不符合,他就直接关闭窗体,我想的是我能不能手动对ModelResult赋值,而不是通过按钮的ModelResult来赋值,可以吗
      

  7.   

    代码中写直接odelResult := xxx;
      

  8.   


    上面是A窗体激活的代码,当B窗体消失的时候,A不是重新显示了嘛,理论上窗体应该会重绘之类的,但是没有发生上面三个事件中的一个,为什么因为 B消失后  不一定就会轮到A窗体 也许是C窗口 你的系统不止一个进程  也不止一个窗口 
      

  9.   

    我也觉得Paint事件应该是会执行的,但如上情况的话PAINT事件可能不一定只执行一次
      

  10.   


    但是A重绘是不是一定发生的呢?如果发生,应该要触发的,是不?难道重绘不是分特定窗体的,比如我A窗体也是主窗体中的一个,那比如先主窗体重绘,然后A就不用重绘了吗
      

  11.   

    只要A在屏幕上显示区域大小发生改变onPaint就一定触发(不管是在背后还是在前面,还是半遮着)
    Activate是变成当前活动的窗体才触发
    Resize是窗体的大小尺寸发生改变就触发
      

  12.   

    这种情况你加个窗体的返回值里执行窗体的代码
    B := TB.Create(Application);
    if B.ShowModal <> mrok then
    begin
    //你关闭窗口时这里将执行
    end;
      

  13.   


    这个我已经知道,只是不明白,为什么没有触发OnPaint事件
      

  14.   


    你先了解下windows的消息系统处理先窗体重绘才会触发OnPaint事件  你的那个窗体重绘也吗? 你确定?