用OnKeyDown事件form1的keypreview属性设为true procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (ssAlt in Shift) and (chr(key) in ['a'..'z','A'..'Z','0'..'9']) then begin edit1.Text:=love; if LowerCase(love)='love' then form2.Show; end; end;
我是想在按住ALT的同时依次按下L、O、V、E 四个键,然后出现另一个窗口
帮楼主想了个笨方法,下面的代码是按完L和O后出message unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;type TForm1 = class(TForm) procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormShow(Sender: TObject); procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); private { Private declarations } public { Public declarations } end;var Form1: TForm1; l,o,v,e:boolean;implementation{$R *.dfm}procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (key=76) then l:=true; if (L) and (not o) then begin if (key=79) then o:=true; end; end;procedure TForm1.FormShow(Sender: TObject); begin l:=False; o:=False; v:=False; e:=False;end;procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (l) and (o) then begin l:=False; o:=False; v:=False; e:=False; ShowMessage('haha'); end; end;end.
以前抄来的..你看看用户在窗体上按住ALT键不放,输入“HELLO”,则会出现一个消息框,提示你激活了复活节彩蛋,具体的彩蛋随便你设计了。下面是程序代码:注意别忘记将窗体FORM1的KeyPreview属性设定为True。 unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;type TForm1 = class(TForm) procedure FormKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState); private { Private declarations } public { Public declarations } end;var Form1: TForm1; keytp :string; implementation{$R *.DFM}procedure TForm1.FormKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState); begin //是否按下ALT键,只接收字符 if (shift=[ssALT]) and (key >=$41) and (key< =$5A) then begin keytp:=keytp+chr(key); if keytp=HELLO then begin showmessage(你激活了复活节彩蛋); end; end; end;end.
按键判断很容易,直接在窗体OnKeyPress中判断,添加文件进EXE请看下面:
通常在Delphi的应用程序中,我们会调用到很多的资源,例如图片,动画(AVI),声音,甚至于别的执行文件。当然,把这些资源分布到不同的目录不失为一个好办法,但是有没有可能把这些资源编译成标准的windows资源从而链接到一个执行文件里面呢? 我们可以自己做一个RC文件,例如 sample.rc ,RC文件其实就是一个资源文件的描述文本,通过“记事本”程序创建就行了。然后可以输入一些我们要定义的资源,例如:MEN BITMAP c:\bitmap\men.bitmap
ARJ EXEFILE c:\arj.exe
MOV AVI c:\mov.avi
然后用BRCC32把这个RC文件编译成sample.res(真正的资源文件)。在Delphi的工程文件中使用 $R 编译指令让Delphi包括资源到EXE文件里面。{$R sample.res}
这样我们就可以在这个单一的执行文件中调用资源了。举例如下:EXEFILE:procedure ExtractRes(ResType, ResName, ResNewName : String);
var
Res : TResourceStream;
begin
Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType)); Res.SavetoFile(ResNewName);
Res.Free;
end;
AVI:procedure LoadAVI;
begin
{Avi1是一个TAnimate类}
Avi1.ResName:='AVI';
Avi1.Active:=True;
end;
http://www.ccw.com.cn/htm/app/aprog/01_3_2_2.asp谈Delphi编程中资源文件的应用
http://www.138soft.com/htm/AuthorArt/myres.htm
Shift: TShiftState);
begin
if (ssAlt in Shift) and (chr(key) in ['a'..'z','A'..'Z','0'..'9']) then
begin
edit1.Text:=love;
if LowerCase(love)='love' then
form2.Show;
end;
end;
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TForm1 = class(TForm)
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormShow(Sender: TObject);
procedure FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
l,o,v,e:boolean;implementation{$R *.dfm}procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key=76) then l:=true;
if (L) and (not o) then
begin
if (key=79) then o:=true;
end;
end;procedure TForm1.FormShow(Sender: TObject);
begin
l:=False;
o:=False;
v:=False;
e:=False;end;procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (l) and (o) then
begin
l:=False;
o:=False;
v:=False;
e:=False;
ShowMessage('haha');
end;
end;end.
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs;type
TForm1 = class(TForm)
procedure FormKeyDown
(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
keytp :string;
implementation{$R *.DFM}procedure TForm1.FormKeyDown
(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
//是否按下ALT键,只接收字符
if (shift=[ssALT]) and (key >=$41)
and (key< =$5A) then
begin
keytp:=keytp+chr(key);
if keytp=HELLO then
begin
showmessage(你激活了复活节彩蛋);
end;
end;
end;end.