当前位置:主页>销售管理软件> 列表

请教一个窗口激活的问题! 找sql超市进销存系统

记账软件版1楼: 运行环境:delphi6,win2000 server
问题描述:如何判断运行的程序被鼠标、键盘或者其他方式激活了,我需要在激活的时候做一点事情。或者能够判断我在任务栏上点了这个程序,这样即使已经打开其他窗口,主窗口无法获得焦点也能执行我要做的事情。
要求:程序第一次运行的时候不执行我需要在激活的时候要做的事情。

2楼: unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
procedure MyProcessMsg( var Msg: TMsg; var Handled: boolean );
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}


procedure TForm1.MyProcessMsg(var Msg: TMsg; var Handled: boolean);
begin
if msg.message=45056 then
ShowMessage(''Form Activate'');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
application.onmessage:= MyProcessMsg;
end;

end. 如sql超市进销存系统

3楼: TForm1 = class(TForm)
Edit1: TEdit;
private
{ Private declarations }
public
procedure MyProcessMsg( var message:TWMACTIVATEAPP); message WM_ACTIVATEAPP;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

{ TForm1 }

procedure TForm1.MyProcessMsg(var message: TWMACTIVATEAPP);
begin
if Message.Active then
ShowMessage(''Form Active'');
end;

4楼: 你的激活是个什么概念

5楼: type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
CanDo : boolean;
procedure FormActivateEvent(Sender: TObject);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
CanDo := False;
Application.OnActivate := FormActivateEvent;
end;

procedure TForm1.FormActivateEvent(Sender: TObject);
begin
if CanDo then
begin
{此处写你要的代码,下面一句是我的测试代码}
Caption := FormatDateTime(''hh:nn:ss'', Now);
end
else
CanDo := True;
end;

6楼: 激活就是获得焦点阿,或者说把这个程序调到前台

记账软件版7楼: 那你可以在程序里定义一个变量,选择让程序在第N次激活的时候执行自己的代码

8楼: 我就是想知道如何判断激活了
谢谢大家的回复!