怎么调出复活节彩蛋??(70分)

L

liq728

Unregistered / Unconfirmed
GUEST, unregistred user!
很多人都看过下面这篇文章吧,
用户在窗体上按住ALT键不放,输入“HELLO”,则会出现一个消息框,提示你激活了复
活节彩蛋,具体的彩蛋随便你设计了。下面是程序代码:注意别忘记
将窗体FORM1的KeyPreview属性设定为True。

unit Unit1;
interface
uses
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.
但是我照着做怎么也做不出呀?有谁知道请告诉我!!
还有就是:(key >=$41) and (key <=$5A)是什么意思呀??
这和key=#13有什么区别??
 
把(key >=$41) and (key <=$5A)
改成if chr(key) in ['a'..'z','A'..'Z']试试
把form的keypreview属性设为true
 
把Form1de的KeyPreview:=True才能接受键盘
(key >=$41) and (key <=$5A)为限制只接受字符
 
打错字后,重新打开Form才能调出。
 
每问题,hg605说的对
可以改成
if (shift=[ssALT]) and (key >=$41) and (key <=$5A) then
begin
keytp := keytp+chr(key);
case length(keytp) of
1: if keytp<>'H' then keytp := '';
2: if keytp<>'HE' then keytp := '';
3: if keytp<>'HEL' then keytp := '';
4: if keytp<>'HELL' then keytp := '';
5: begin
if keytp='HELLO' then
begin
showmessage('你激活了复活节彩蛋');
keytp := '';
end
else keytp := '';
end;
end;
end;
 
自己设计调出方式吧,比如在那个象素上点一下呀。。。比较有趣的。。
 
各位给的解答还是不行呀,还有哪位高手知道?
 
将问题讲得具体些吧!
 
你的代码只能在form中使用一次,就算成功了,下次也不行了,
不过如果你按造正确方法操作的话还是可以成功一次的
 
keytp需要重新初始化为空。
 
由于'HELLO'是大写,因此应同时按Shift,Alt后再打'HELLO',
可将 if keytp='HELLO' then 改为 if keytp='H' then
或小写hello;
调试成功再改回 if keytp='HELLO' then
如果不成功,则重新启动程序,
 
接受答案了!
 
多人接受答案了。
 
接受答案了.
 

Similar threads

I
回复
0
查看
544
import
I
I
回复
0
查看
524
import
I
I
回复
0
查看
507
import
I
I
回复
0
查看
613
import
I
顶部