全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1241
推到 Plurk!
推到 Facebook!

彈出窗體問題-主窗體最小化pop窗體就沒有了

尚未結案
allen-86
一般會員


發表:28
回覆:44
積分:19
註冊:2008-02-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-12-08 17:38:52 IP:121.236.xxx.xxx 訂閱
如果用過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 begin
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.
附加檔案:4b1e1eac99f9b_pop2.jpg
系統時間:2024-05-16 23:58:48
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!