delphi登陆窗体的制作,就我知道的,可以有两种方法,一种是在工程文件中实现登陆窗体的动态调用,另一种就是在主窗体的OnCreate事件中动态创建登陆窗体,两种方法都需要将主窗体设置为Auto-create form,将登陆窗体设置为 Availabel form.
登陆窗体: Form1; 主窗体: Mainfrm;
一.在工程文件中实现动态创建登陆窗体(网上资料提供): 可以在Form1中Public部分添加一个变量,可以是integer类型,或者boolean型,用来判断是什么时候可以让主窗体显示,类似:
public frm_show : integer;
登陆窗体中,"登陆"按钮的实现:(关于密码和用户名的判断部分只做简单设置)
procedure TForm1.Button1Click(Sender: TObject); begin with query1 do begin close; sql.Clear; sql.Add('select * from login where username=:username and password=:password'); parambyname('username').AsString := trim(edit1.Text); parambyname('password').AsString := trim(edit2.Text); open; if isempty then begin showmessage('请核对您的用户名和密码信息!'); frm_show := 0; end else begin frm_show:= 1;//当成功时,frm_show设置为1,之后form1也将关闭. form1.Close; end; end; end; 再看看工程文件:(project -> view soruce) program Project1;
uses Forms, Unit1 in 'Unit1.pas' {Form1}, mainfrm in 'mainfrm2.pas' {Form2};
{$R *.res}
begin Application.Initialize; form1 := tform1.Create(application); form1.ShowModal; if form1.frm_show = 1 then//frm_show设置为public,可在此调用 Application.CreateForm(Tmainfrm2, mainfrm2); Application.Run; end.
上述方法不牵涉主窗体代码部分.
二.在主窗体的OnCreate事件部分添加对登陆窗体的动态创建: 主窗体: procedure Tmainfrm.FormCreate(Sender: TObject); begin form1 := tform1.Create(application); form1.ShowModal; end; 登陆窗体: procedure TForm1.Button1Click(Sender: TObject); begin with query1 do begin close; sql.Clear; sql.Add('select * from login where username=:username and password=:password'); parambyname('username').AsString := trim(edit1.Text); parambyname('password').AsString := trim(edit2.Text); open; if isempty then showmessage('请核对您的用户名和密码信息!') else form1.Close; end; end;
上述的两种方法是借一位网友的问题才想起来做的.一开始我使用的第二种方法,可是运行的时候总提示内存不够等问题.换了第一种方法运行ok后再换用第二种方法后竟然也运行ok~这破电脑是该换了...
|
请发表评论