彈出窗體問題-主窗體最小化pop窗體就沒有了 |
尚未結案
|
allen-86
一般會員 發表:28 回覆:44 積分:19 註冊:2008-02-01 發送簡訊給我 |
如果用過Foxmail的都知道有新郵件就會有窗體彈出,或者類似的程式都有此功能。現在碰到的一個問題:
1.如果主窗體不是最小化(最大化或normal),當彈出窗體彈出,然後最小化主窗體,那麼彈出窗體也跟著沒了。 2.如果啟動完畢,趕緊最小化主窗體,程式自動彈出窗體後,任務欄上的主窗體不能最大化了,除非右擊鼠標->還原。 但是還原後,最小化又沒了! 多謝各位! 以下為程式代碼: //彈出窗體 unit muPopMessage; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TfrmPopMessage = class(TForm) Timer1: TTimer; Panel1: TPanel; Panel2: TPanel; Timer2: TTimer; Timer3: TTimer; GroupBox1: TGroupBox; procedure Timer1Timer(Sender: TObject); procedure GroupBox1MouseEnter(Sender: TObject); procedure GroupBox1MouseLeave(Sender: TObject); procedure Timer2Timer(Sender: TObject); procedure Timer3Timer(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); //添加这行 private { Private declarations } public { Public declarations } procedure SetParams; end; var frmPopMessage: TfrmPopMessage; HeightReng:integer; implementation {$R *.dfm} { TfrmPopMessage } procedure TfrmPopMessage.FormClose(Sender: TObject; var Action: TCloseAction); begin FreeAndNil(frmPopMessage); end; procedure TfrmPopMessage.GroupBox1MouseEnter(Sender: TObject); begin timer1.Enabled :=False; end; procedure TfrmPopMessage.GroupBox1MouseLeave(Sender: TObject); begin timer1.Enabled :=True; end; procedure TfrmPopMessage.SetParams; var hApp :HWND; rcApp:TRect; RenG :integer; begin hApp:=FindWindow('Shell_TrayWnd', '');//托盘类名 if hApp<>0 then begin GetWindowRect(hApp, rcApp); Reng:= rcApp.Bottom-rcApp.Top; //得到任务栏高度 HeightReng:=Reng; with frmPopMessage do begin Height:=150; Width:=200; Left:=screen.Width-Width; Top :=screen.Height-Reng; BorderStyle:=bsNone; AlphaBlend:=true; BringToFront; show; end; end; end; //隱藏 procedure TfrmPopMessage.Timer1Timer(Sender: TObject); begin Self.Top:=Self.Top 5; if Self.Top>screen.Height-HeightReng then begin Timer1.Enabled:=False; Close; end; end; //彈出 procedure TfrmPopMessage.Timer2Timer(Sender: TObject); begin Self.Top:=Self.Top-5; if Self.Top Timer2.Enabled:=False; Timer3.Enabled :=true; end; end; //延時 procedure TfrmPopMessage.Timer3Timer(Sender: TObject); begin timer1.Enabled :=true; timer3.Enabled :=false; end; end. //主程式 unit muMain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TfrmMain = class(TForm) Button1: TButton; Timer1: TTimer; procedure FormActivate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure FormResize(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmMain: TfrmMain; tt:integer; implementation uses muPopMessage; {$R *.dfm} procedure TfrmMain.Button1Click(Sender: TObject); begin frmPopMessage:=TfrmPopMessage.Create(Application); frmPopMessage.SetParams; end; procedure TfrmMain.FormActivate(Sender: TObject); var a:TCursor; begin a:=screen.Cursor; end; procedure TfrmMain.FormResize(Sender: TObject); begin Self.Repaint; end; procedure TfrmMain.Timer1Timer(Sender: TObject); begin Button1Click(nil); timer1.Enabled :=false; end; end. (DELPHI 2010 WINXP update2)
------
The empty vessels make the greatest sound. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |