我用的是循环语句,我想用热键终止语句的循环.请问如何设置,帮帮忙.
解决方案 »
- 一个socket编程的问题!100分
- 怎样对TQUERY 对象的结果进行操作?(在线等)
- 急啊,大家有没有delphi 7的注册码和序列号啊,我今天要回去了,想到网上下一个,不过要这些啊,大家能否帮忙啊!
- 特急:在ACCESS中如何通过SQL语句创建视图呀???
- 如何访问扫描仪和数码相机
- 请大家参谋,关于这个项目设计,多谢。
- 报错:在单一线程模式下,试图在一个以上线程上进行呼叫。急 在线
- 请教:打印机每走一页,自动弹出换纸窗口?
- 求助:InstallShield???
- 我这样为何不对??
- win2000 server 下ServerSocket的ServerSocketClientRead事件为什么不被触发,在win98下就正常
- 大家帮帮忙吧!如何擦去已画的线路中的一部分曲线?
不过如果循环较大的话,每次都判断,感觉不是很好,呵呵
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
procedure MyHotKeyMsg(var msg : TMessage);message wm_hotkey;
public
hotkeyid :integer;
exitwhile : Boolean;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
i := 0; //一个长循环,将label1显示的内容逐渐增加,退出的条件时exitwhile为ture
while true do
begin
label1.Caption := inttostr(i);
inc(i);
Application.ProcessMessages;
if exitwhile then break;
end;end;procedure TForm1.FormCreate(Sender: TObject);
begin
exitwhile := false;
//根据原子表来安全的得到热键的id
hotkeyid:=GlobalAddAtom(pchar('MYHotKey'))-$C000;
//定义热键为ctrl+alt+a
registerhotkey(handle,hotkeyid,MOD_CONTROL or mod_Alt,$41);
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//释放热键并删除原子表中的相关信息
unregisterhotkey(handle,hotkeyid);
DeleteAtom(HotKeyID);
end;procedure TForm1.MyHotKeyMsg(var msg: TMessage);
begin
//处理热键消息,如果是ctrl+alt+a,则将exitwhile置为true
if (msg.LParamHi=$41) and
(msg.lparamLo=MOD_CONTROL or mod_Alt) then
begin
msg.Result:=1;
exitwhile := true;
end;
end;end.