我现有的工程如下:
工程名:ABC
主窗体:Main_F
子窗体:emp1,emp2 ...现在的情况是,程序一运行,就会出现 Main_F我现在想增加一个新的窗体,叫 LOG_F 作为验证密码用。我想让程序运行时只显示 LOG_F,密码正确再显示 Main_F具体我该怎么做?
工程名:ABC
主窗体:Main_F
子窗体:emp1,emp2 ...现在的情况是,程序一运行,就会出现 Main_F我现在想增加一个新的窗体,叫 LOG_F 作为验证密码用。我想让程序运行时只显示 LOG_F,密码正确再显示 Main_F具体我该怎么做?
在log_f里添加代码,当密码正确时:
main_f := tmain_f.create(self);
main_f.show;
Application.CreateForm(TForm, LOG_F);
LOG_F.showmodal;
if LOG_F.modalreturn = true then
Application.CreateForm(TForm, Main_F);
.....
Application.CreateForm(TForm, LOG_F);
LOG_F.showmodal;
Application.CreateForm(TForm, Main_F);
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};{$R *.RES}begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Form2.ShowModal;
Application.Run;
end.
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2}; {$R *.RES} begin
Application.Initialize;
Application.ShowMainForm := false ;//要加上这句
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Form2.ShowModal;
Application.Run;
end.
但是在Main_F最小化的时候,最小化后,不是在任务栏,还是在桌面的左下角,开始菜单的上面。要怎么办?我的方是:
在project --option里把所有的窗体放到右边,包括main_f,左边只留log_f,然后程序运行时就只会显示log_f
在log_f里添加代码,当密码正确时:
main_f := tmain_f.create(self);
main_f.show;
Log_F.Hide;
LOG_F.Show()或者LOG_F.ShowModal() ;
启动时的代码
begin
Application.Initialize;
Application.Title := 'ABC Hrms';
Application.CreateForm(TLog_F, Log_F);
Application.Run;
end.
打开Main时的代码
Main_F := Tmain_F.Create(self);
Main_F.Show;
Log_F.Hide;
LOG_F:= TLOG_F.Create(Self);
LOG_F.ShowModal;
if 登录成功则 关闭登录窗体
else
begin
Close;
ExitProcess(0);
Application.Terminate;
end;
Application.Initialize; Form2:= TForm2.Create(Application); if Form2.ShowModal <> 1 then
Application.Terminate ; Form2.Free;
Application.CreateForm(TForm1, Form1);
Application.Run ;end.
这里面的代码是程序的入口 要在这里面做修改以下是我写过的程序的一个例子begin
Application.Initialize;
//初始化数据库类 G_DatabaseModule是数据库执行全局对象
//所有的adoquery都由它执行
G_DatabaseModule := TdmDatabase.Create(nil);
if not G_DatabaseModule.TryConnect then
begin
Application.MessageBox('数据库连接错误,请检查配置和网络!','错误',
MB_ICONERROR);
Application.Terminate;
Exit;
end;
//创建登录对话框
with TfrmLogin.Create(nil) do
begin
if ShowModal <> mrOK then
begin
Free;
Application.Terminate;
Exit;
end
else begin
//登录成功进入主界面
Application.CreateForm(TfrmMain, frmMain);
end;
end;
Application.Run;
end.
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,Unit2;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var
fmLog:TForm2;
begin
fmLog:=TForm2.Create(Self);
if fmLog.ShowModal=mrOk then
begin
ShowMessage('成功登录!');
end
else
begin
ShowMessage('登录失败!');
Application.ShowMainForm:=False;
Application.Terminate;
Exit;
end;
end;end.
这样就可以的。