还有一个就是 我打算在程序运行的时候,自动播放一个音乐,但是这个音乐文件必须单独存在,能否把这个音乐文件一同编进.exe中呢?
15 个解决方案
#1
你说的是彩蛋吧
按键判断很容易,直接在窗体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;
按键判断很容易,直接在窗体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;
#2
Dephi5中资源文件的创建和使用
http://www.ccw.com.cn/htm/app/aprog/01_3_2_2.asp
谈Delphi编程中资源文件的应用
http://www.138soft.com/htm/AuthorArt/myres.htm
http://www.ccw.com.cn/htm/app/aprog/01_3_2_2.asp
谈Delphi编程中资源文件的应用
http://www.138soft.com/htm/AuthorArt/myres.htm
#3
就是判断按键,然后show一个窗体。
#4
能举一个OnKeyPress的例吗?如同时按下ALT加上LOVE
#5
用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;
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;
#6
学习,学习~~~~~~~
#7
谢谢!!!!有机会请你吃饭!!
#8
还有高手在吗?我的目的并没有实现?帮帮我!!!
#9
其实1楼说的都差不多了~~
#10
我是想在按住ALT的同时依次按下L、O、V、E 四个键,然后出现另一个窗口
#11
帮楼主想了个笨方法,下面的代码是按完L和O后出message
unit Unit1;
interface
uses
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.
unit Unit1;
interface
uses
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.
#12
运行之后的的结果出来了吗?
#13
可以编译,但执行后什么反映都没有
#14
复活节彩蛋..呵呵
#15
以前抄来的..你看看
用户在窗体上按住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.
用户在窗体上按住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.
#1
你说的是彩蛋吧
按键判断很容易,直接在窗体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;
按键判断很容易,直接在窗体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;
#2
Dephi5中资源文件的创建和使用
http://www.ccw.com.cn/htm/app/aprog/01_3_2_2.asp
谈Delphi编程中资源文件的应用
http://www.138soft.com/htm/AuthorArt/myres.htm
http://www.ccw.com.cn/htm/app/aprog/01_3_2_2.asp
谈Delphi编程中资源文件的应用
http://www.138soft.com/htm/AuthorArt/myres.htm
#3
就是判断按键,然后show一个窗体。
#4
能举一个OnKeyPress的例吗?如同时按下ALT加上LOVE
#5
用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;
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;
#6
学习,学习~~~~~~~
#7
谢谢!!!!有机会请你吃饭!!
#8
还有高手在吗?我的目的并没有实现?帮帮我!!!
#9
其实1楼说的都差不多了~~
#10
我是想在按住ALT的同时依次按下L、O、V、E 四个键,然后出现另一个窗口
#11
帮楼主想了个笨方法,下面的代码是按完L和O后出message
unit Unit1;
interface
uses
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.
unit Unit1;
interface
uses
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.
#12
运行之后的的结果出来了吗?
#13
可以编译,但执行后什么反映都没有
#14
复活节彩蛋..呵呵
#15
以前抄来的..你看看
用户在窗体上按住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.
用户在窗体上按住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.