我是想在用户切换到我的程序的时候刷新我的某些窗体等,当然切换的方式可以为任何切换方式,比如Alt+Tab等。
解决方案 »
- 怎样确定当前点是否为边界点
- 〓〓〓用delphi如何制作类似HTML的表单提交????早几天太豪气,丢出都是100分,搞到现在没分了,
- 一个ISAPI应用程序的问题!
- 帮忙!!非常难的一个问题(读服务器当中的注册表)
- 在VB中可使多个控件同名构成控件数组,共享同一事件过程代码,那Delphi中怎样实现呢?
- 如何将StringGrid中的数据读取到DBGrid中?
- UDP的怪问题
- 搜索问题
- 给我一个将表(.db)转化成excel格式的例子,包含设置字体和表头,合计功能。谢谢。
- 急!!!程序员大本营光碟中有的东西写的不清楚!!!!!!
- 怎样实现这样的数据显示效果????大家帮个忙
- 如何用TPrinter控制DBGrid的打印?
b : boolean = false;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if GetForegroundWindow() = self.Handle then
begin
if not b then
begin
b := true;
Edit1.Text('Hello');
end;
end
else
b := false;
end;
hch_45(HCH ~ahong.net~),我想问,当我的应用程序一直在顶层,哟岂不是要不停的刷新我的窗体。
cooling(cooling) ,你说的active 事件,其实只在窗体刚显示时执行一次。
我要的是在用户切换动我的应用程序的一瞬间的处理。
b : boolean = false;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if GetForegroundWindow() = self.Handle then
begin
if not b then
begin
b := true;
Edit1.Text('Hello');
end;
end
else
b := false;
end;
当开始做那一个超大循环(登录数据库)的时候,在此期间切换到其它应用程序,然后再切换回我们的程序,我们看见的将是一片空白,而所有刷新窗体代码将不会执行。另外,我还试着用用钩子(Hook)来实现我的愿望,可是不行。unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, AppEvnts;type
TForm1 = class(TForm)
Button1: TButton;
ApplicationEvents1: TApplicationEvents;
Edit1: TEdit;
Memo1: TMemo;
procedure ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
protected
procedure WndProc(var Message: TMessage); override;
end;var
Form1: TForm1;
g_iText: Integer;implementation{$R *.dfm}procedure TForm1.WndProc(var Message: TMessage);
begin
if Message.Msg = ? then
begin
Refresh; //如果这句代码执行,将会报异常
end; inherited WndProc(Message); {其他消息交父辈wndproc处理}
end;procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if (Msg.message = ?) or (Msg.wParam = ?) or (Msg.lParam = ?) then
begin
g_iText := g_iText + 1;
Memo1.Lines.Add(IntToStr(g_iText));
Refresh;
end;
end;{-----------------------------------------------------------------------------
过程名: TForm1.Button1Click
作者: 黄仁光
日期: 2004年01月20日
参数: Sender: TObject
结果: None
目的: 大家就将这儿认为是登录数据库的代码,
当然下面的循环将会执行几分钟没问题。
-----------------------------------------------------------------------------}procedure TForm1.Button1Click(Sender: TObject);
var
iLoop: Integer;
begin
try
Screen.Cursor := crHourGlass;
for iLoop := 0 to 20000000 do
begin
Edit1.Text := IntToStr(i);
Edit1.Refresh;
end;
finally
Screen.Cursor := crDefault;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
g_iText := 0;
Memo1.Clear;
end;procedure TForm1.FormActivate(Sender: TObject);
begin
Refresh;
end;end.