方法一:调用Showmodal函数来实现。Showmodal方式使一个窗口为激活窗口,和Show相似,但它令窗口模式化。现举一例说明: ⒈开始一个新工程。给表格起名为MainForm MainForm的单元起名为Main 工程文件起名为Test。 ⒉在MainForm中插入一个Button部件,将其Caption属性设为“关闭”,为该部件的OnClick事件创建一个过程,并在过程的begin和end之间插入Close语句。 ⒊在应用程序添加一个表格,将这个表格起名为MoveForm,MoveForm 的单元起名为Move。 ⒋为便于演示,在MoveForm中插入一个Label部件,设置其Caption 属性为“欢迎进入本系统”。 ⒌建立两个表格之间的关联。在Unit Main的 implementation 中加入语句 usesmove;再为MainForm创建OnActivate事件。 procedure TMainForm.FormActivate(sender:TObject); begin MoveForm.Showmodal; end; ⒍从Component模板的System类别中选择一个计时器(Timer),添加入 MoveForm表格中,设置其Interval属性为3000(可根据需要自定义),再为其OnTimer事件添加语句close;加入一个Timer部件目的是用以控制闪现窗口显示时间。在此, MoveForm显示了3秒钟后关闭,主窗口MainForm自动被激活。 ⒎编译、运行程序,就能得到延迟为3秒的闪现窗口。方法二:你可通过修改工程文件中的源代码来实现。 前四步同方法一。 ⒌选择View/Project Manager,击Option按钮,选择结果Project Option 对话底部的Forms页栏目。注意,MainForm和MoveForm是在Auto-create forms 列表中。选择MoveForm并击右键头按钮,把这个表格移到 Available forms 。 所有的Delphi表格通过缺省方式自动在内存中建立,因此它们要消耗内存和系统资源。在类似这里(程序运行时创建一个表格)的情况下,你应该将表格从自动创建列表格中去掉。 ⒍下一步修改工程的源代码。选择View/Project Source,修改begin和end之间的语句如下: 程序清单Test.Dpr program Test uses forms Main in 'MAIN.PAS'{MainForm} Move in 'Move.PAS'{MoveForm} {$R *.RES} begin {Free从内存中释放对象} Application.Run; end. 第一条语句创建了对象,该对象存在内存中,但还不能看见,为了让它出现并更新它的内容,调用对象的Show和Update成员函数:Show和Update。当闪现窗口使用完后,用Hide函数将它隐藏起来,然后用Free函数释放它所占据的内存。 ⒎如果此刻你编译和运行程序,MoveForm窗口一闪而过,你可能未来得及看清。为使MoveForm窗口显示几秒种,我们可为MainForm的OnCreate 事件创建一个处理程序,延迟MoveForm窗口的显现时间。 program TMainForm.FormCreate(sender:Tobject); var currentTime:LongInt; begin currentTime:=GetTickCount div 1000; while ((GetTickCount div 1000)<(currentTime+3) do {不做任何事); end; end. GetTickCount函数返回窗口启动后过去的毫秒数,这个值除以1000 转化为秒数。此时你编译运行程序,就能得到一个延迟3秒多的闪现窗口。为闪现窗口添加上Image部件,再对字体及窗口进行修饰,我们就能为应用程序,创建一个精美的封面或在程序启动时显示重要提示。
密码窗口也要在工程文件中加语句。 工程文件中添加: loginform:=Tloginform.create(Application); loginform.show; loginform.Update; while i=true do // begin loginform.Hide; loginform.free; end;具体的密码窗口loginform你自己实现吧。可以用ado连接到你建立的存储密码和用户名的数据库表中。每次当用户输入用户名和密码时,检查表中有无这个名以及密码是否同表中匹配等等,以限制登录。
工程文件中的代码执行顺序就是各个窗体出现的顺序,你可以自己决定program Project1;uses Forms, Unit1 in 'Unit1.pas' {MainForm}, Unit2 in 'Unit2.pas' {splashform}, Unit3 in 'unit3.pas' {loginform}; {$R *.res}begin Application.Initialize; splash:=Tsplash.Create(Application); try splash.Show; splash.Update;//启动画面 loginform.show;//登录画面,在此上写处理登录 Application.CreateForm(TMainForm, MainForm); Application.Run; finally splash.Free; end; end.
program Project1;uses
Forms,
Unit1 in 'Unit1.pas' {MainForm},
Unit2 in 'Unit2.pas' {LoginForm};{$R *.res}begin
Application.Initialize;
LoginForm:=TLoginForm.Create(Application);
try
LoginForm.Show;
LoginForm.Update;
Application.CreateForm(TMainForm, MainForm);
Application.Run;
finally
LoginForm.Free;
end;
end.
密码窗体也一样作,也在项目单元中写代码。至于怎样加密,我想应该是你自己的事了(我如果知道了,那你的加密还有什么用?:) )
新建一窗体form1,将其boderstyle属性设置为bsnone,添加一Timage控件,再放如你想要的图片,在工程属性里将其设置为非自动创建的窗体,接下来修改工程文件
.....
Form1:=TForm1.Create(application);
Form1.Show;
Form1.Refresh;
Application.CreateForm(TMainForm, MainForm);//你程序的主窗体
Form1.Hide;
Form1.Free;
......
这里限定口令长度最大为32个字符。
每次设置口令时,都自动产生一个GUID,它也是32个字节(相当于32个字符)。把以这个GUID为密钥对你的口令加密,然后保存加密过的口令和该GUID,最好分开存放。当然,就简单而言,这里完全可以用移位的方法,因为GUID是变化的。所以,只要来破译此口令的人不知道你的加密思路,那么他一般也不会来尝试。还有,现在的黑客软件如此多,你需要在登录时的处理上多下些工夫,否则用穷举法运行几天(运气好的话也许就几分钟)来尝试登录,绝对可以把口令试出来。你在网上搜索“加密”,会找到很多可以参考的资料。
⒈开始一个新工程。给表格起名为MainForm
MainForm的单元起名为Main
工程文件起名为Test。
⒉在MainForm中插入一个Button部件,将其Caption属性设为“关闭”,为该部件的OnClick事件创建一个过程,并在过程的begin和end之间插入Close语句。
⒊在应用程序添加一个表格,将这个表格起名为MoveForm,MoveForm 的单元起名为Move。
⒋为便于演示,在MoveForm中插入一个Label部件,设置其Caption 属性为“欢迎进入本系统”。
⒌建立两个表格之间的关联。在Unit Main的 implementation 中加入语句 usesmove;再为MainForm创建OnActivate事件。
procedure TMainForm.FormActivate(sender:TObject);
begin
MoveForm.Showmodal;
end;
⒍从Component模板的System类别中选择一个计时器(Timer),添加入 MoveForm表格中,设置其Interval属性为3000(可根据需要自定义),再为其OnTimer事件添加语句close;加入一个Timer部件目的是用以控制闪现窗口显示时间。在此, MoveForm显示了3秒钟后关闭,主窗口MainForm自动被激活。
⒎编译、运行程序,就能得到延迟为3秒的闪现窗口。方法二:你可通过修改工程文件中的源代码来实现。
前四步同方法一。
⒌选择View/Project Manager,击Option按钮,选择结果Project Option 对话底部的Forms页栏目。注意,MainForm和MoveForm是在Auto-create forms 列表中。选择MoveForm并击右键头按钮,把这个表格移到 Available forms 。 所有的Delphi表格通过缺省方式自动在内存中建立,因此它们要消耗内存和系统资源。在类似这里(程序运行时创建一个表格)的情况下,你应该将表格从自动创建列表格中去掉。
⒍下一步修改工程的源代码。选择View/Project Source,修改begin和end之间的语句如下:
程序清单Test.Dpr
program Test
uses
forms
Main in 'MAIN.PAS'{MainForm}
Move in 'Move.PAS'{MoveForm}
{$R *.RES}
begin
{Free从内存中释放对象}
Application.Run;
end.
第一条语句创建了对象,该对象存在内存中,但还不能看见,为了让它出现并更新它的内容,调用对象的Show和Update成员函数:Show和Update。当闪现窗口使用完后,用Hide函数将它隐藏起来,然后用Free函数释放它所占据的内存。
⒎如果此刻你编译和运行程序,MoveForm窗口一闪而过,你可能未来得及看清。为使MoveForm窗口显示几秒种,我们可为MainForm的OnCreate 事件创建一个处理程序,延迟MoveForm窗口的显现时间。
program TMainForm.FormCreate(sender:Tobject);
var
currentTime:LongInt;
begin
currentTime:=GetTickCount div 1000;
while ((GetTickCount div 1000)<(currentTime+3) do
{不做任何事);
end;
end.
GetTickCount函数返回窗口启动后过去的毫秒数,这个值除以1000 转化为秒数。此时你编译运行程序,就能得到一个延迟3秒多的闪现窗口。为闪现窗口添加上Image部件,再对字体及窗口进行修饰,我们就能为应用程序,创建一个精美的封面或在程序启动时显示重要提示。
工程文件中添加:
loginform:=Tloginform.create(Application);
loginform.show;
loginform.Update;
while i=true do //
begin
loginform.Hide;
loginform.free;
end;具体的密码窗口loginform你自己实现吧。可以用ado连接到你建立的存储密码和用户名的数据库表中。每次当用户输入用户名和密码时,检查表中有无这个名以及密码是否同表中匹配等等,以限制登录。
Forms,
Unit1 in 'Unit1.pas' {MainForm},
Unit2 in 'Unit2.pas' {splashform},
Unit3 in 'unit3.pas' {loginform};
{$R *.res}begin
Application.Initialize;
splash:=Tsplash.Create(Application);
try
splash.Show;
splash.Update;//启动画面
loginform.show;//登录画面,在此上写处理登录
Application.CreateForm(TMainForm, MainForm);
Application.Run;
finally
splash.Free;
end;
end.