请问:通过主界面动态创建了若干个子界面,在鼠标不移动待机3分钟后,怎么自动返回主界面。

解决方案 »

  1.   

    Form1为主窗体,建立一个DataModule 单元名为wait,放两个时间控件Ttime.程序如下:
    unit wait;interfaceuses
      SysUtils, Classes, ExtCtrls,Forms,Windows,Messages;type
      TDataModule5 = class(TDataModule)
        Timer1: TTimer;
        Timer2: TTimer;
        procedure Timer1Timer(Sender: TObject);
        procedure Timer2Timer(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      DataModule5: TDataModule5;
       mouse_x,mouse_y,mouse_xx,mouse_yy:integer;
       win_h:Tform;
       msg:Tmsg;
    implementationuses Unit1;{$R *.dfm}procedure TDataModule5.Timer1Timer(Sender: TObject);
    begin
        if ((mouse_x=mouse_xx) and (mouse_y=mouse_yy)) then
        begin
             if win_h<>nil then
                 win_h.Free;
             if form1=nil then
             begin
                 form1:=form1.Create(self);
                 form1.Show;
             end
             else
                form1.show;
        end;
    end;procedure TDataModule5.Timer2Timer(Sender: TObject);
    begin
        mouse_xx:=mouse_x;
        mouse_yy:=mouse_y;
    end;end.在窗体1种动态创建窗体2:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
        form2:=Tform2.create(self);
        win_h:=form2;
        form2.show;
        self.Hide;
    end;
    在窗体2的鼠标移动事件中:
    procedure TForm2.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
        mouse_x:=x;
        mouse_y:=y;
        msg.message:=WM_MOUSEMOVE;
    end;
    但在多个子窗体显示,返回到主窗体form1时,如不释放那些子窗体,10分钟后会提示内存不足,如释放那些子窗体,就得把所有打开的子窗体全部记录下来,有没有更好的方法?