1:clientmain.WindowState:=wsMinimized;
结果不能最小化
2:做登录窗口出现的问题
program client;uses
Forms,
clientmainunit in 'clientmainunit.pas' {clientmain},
clientfaceunit in 'clientfaceunit.pas' {clientface},
clientloginunit in 'clientloginunit.pas' {clientlogin},
clientdmunit in 'clientdmunit.pas' {clientdm: TDataModule};{$R *.res}begin
Application.Initialize;
clientface:=tclientface.Create(application);
clientface.Show;
clientface.Update;
Application.Title := '科星管理信息系统';
Application.CreateForm(Tclientmain, clientmain);
Application.CreateForm(Tclientlogin, clientlogin);
Application.CreateForm(Tclientdm, clientdm);
clientface.free;
if clientlogin.Showmodal <> 1 then
begin
Application.Terminate;
end
else
begin
Application.CreateForm(Tclientmain, clientmain);
Application.Run;
end;
end.
procedure Tclientlogin.BitBtn1Click(Sender: TObject);
begin
if ComboBox1.Text= '' then
showmessage('请选择登陆用户名!')
else
with clientdm.c_cam_sys_user do
begin
close;
commandtext:='select * from cam_sys_user where name='+quotedstr(ComboBox1.Text);
open;
if recordcount=0 then
showmessage('没有该用户,请核对后重新输入!')
else
begin
if edit1.Text<>fieldbyname('password').asstring then
showmessage('密码错误,请重新输入!')
else
begin
xtyhm:=trim(fieldbyname('name').AsString);
with clientdm.c_cam_qx do
begin
close;
commandtext:='select * from cam_qx where username like '+quotedstr(combobox1.Text);
open;
if recordcount=0 then
showmessage('该用户尚未配置使用权限,请用系统管理员身份登陆并设置。')
else
begin
close;
modalresult := mrok;
end;
end;
end; end;
end;end;
运行出现clientlogin窗口后,直接关掉窗口出现地址报错关于module,如果在ComboBox中选择了用户,没有报错,可以登录clientmain.
结果不能最小化
2:做登录窗口出现的问题
program client;uses
Forms,
clientmainunit in 'clientmainunit.pas' {clientmain},
clientfaceunit in 'clientfaceunit.pas' {clientface},
clientloginunit in 'clientloginunit.pas' {clientlogin},
clientdmunit in 'clientdmunit.pas' {clientdm: TDataModule};{$R *.res}begin
Application.Initialize;
clientface:=tclientface.Create(application);
clientface.Show;
clientface.Update;
Application.Title := '科星管理信息系统';
Application.CreateForm(Tclientmain, clientmain);
Application.CreateForm(Tclientlogin, clientlogin);
Application.CreateForm(Tclientdm, clientdm);
clientface.free;
if clientlogin.Showmodal <> 1 then
begin
Application.Terminate;
end
else
begin
Application.CreateForm(Tclientmain, clientmain);
Application.Run;
end;
end.
procedure Tclientlogin.BitBtn1Click(Sender: TObject);
begin
if ComboBox1.Text= '' then
showmessage('请选择登陆用户名!')
else
with clientdm.c_cam_sys_user do
begin
close;
commandtext:='select * from cam_sys_user where name='+quotedstr(ComboBox1.Text);
open;
if recordcount=0 then
showmessage('没有该用户,请核对后重新输入!')
else
begin
if edit1.Text<>fieldbyname('password').asstring then
showmessage('密码错误,请重新输入!')
else
begin
xtyhm:=trim(fieldbyname('name').AsString);
with clientdm.c_cam_qx do
begin
close;
commandtext:='select * from cam_qx where username like '+quotedstr(combobox1.Text);
open;
if recordcount=0 then
showmessage('该用户尚未配置使用权限,请用系统管理员身份登陆并设置。')
else
begin
close;
modalresult := mrok;
end;
end;
end; end;
end;end;
运行出现clientlogin窗口后,直接关掉窗口出现地址报错关于module,如果在ComboBox中选择了用户,没有报错,可以登录clientmain.
begin
modalresult := mrok;
end;
直接这样子也会出现同样的错误
Forms,
Unit1 in 'Unit1.pas' {Frmmain},
Unit2 in 'Unit2.pas' {frmLogin};{$R *.res}begin
Application.Initialize;
with TfrmLogin.Create(Application) do
begin
ShowModal;
if ModalResult = 2 then
begin
Close ;
Application.Terminate;
end
else
if ModalResult = 1 then
begin
Close;
Application.CreateForm(TFrmmain, Frmmain);
Application.Run;
end;
end;
end.
--------------------------------------
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TFrmmain = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;var
Frmmain: TFrmmain;implementation{$R *.dfm}end.
--------------------------------------
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;type
TfrmLogin = class(TForm)
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Edit1: TEdit;
Edit2: TEdit;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
frmLogin: TfrmLogin;
i : Integer ;implementation{$R *.dfm}procedure TfrmLogin.BitBtn1Click(Sender: TObject);
begin
if (Edit1.Text = '1234') and (Edit2.Text = '1234') then
ModalResult := 1
else
begin
if i < 4 then
begin
inc(i) ;
Edit1.Text := '' ;
Edit2.Text := '' ;
Edit1.SetFocus ;
end
else
ModalResult := 2 ;
end ;
end;procedure TfrmLogin.BitBtn2Click(Sender: TObject);
begin
ModalResult := 2 ;
end;end.
Forms,
Unit1 in 'Unit1.pas' {main},
Unit2 in 'Unit2.pas' {login},
Unit3 in 'Unit3.pas' {face},
Unit4 in 'Unit4.pas' {dm: TDataModule};{$R *.res}begin
Application.Initialize;
Application.CreateForm(Tface, face);
face.Show;
Application.CreateForm(Tdm, dm);(如果把字句加上就出错)
face.Free;
with TLogin.Create(Application) do
begin
ShowModal;
if ModalResult = 2 then
begin
Close ;
Application.Terminate;
end
else
if ModalResult = 1 then
begin
Close;
Application.CreateForm(Tmain, main); Application.Run;
end;
end;
end.
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
Tlogin = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
login: Tlogin;implementation{$R *.dfm}procedure Tlogin.Button2Click(Sender: TObject);
begin
ModalResult := 1
end;end.说明:如果把Application.CreateForm(Tdm, dm);加上,当出现login后立即关掉窗口就出现错误"at address 77a4cc04 in module 'ole32.dll',read of address feeeefeeee"
unit Unit4;interfaceuses
SysUtils, Classes, DB, DBClient, MConnect;type
Tdm = class(TDataModule)
DCOMConnection1: TDCOMConnection;
ClientDataSet1: TClientDataSet;
private
{ Private declarations }
public
{ Public declarations }
end;var
dm: Tdm;implementation{$R *.dfm}end.
这个你创建了两次..
--------------------------------------------------------------TLogin.FormClose : Application.Terminate ;
我想请你试一下
数据模板中分别放以下几种情况
1:ADOConnection1,用它来连接后台数据库
2:Database1,用它来连接后台数据库
3:DCOMConnection1,连接远程应用程序服务器
结果直接关掉出1正确,2,3错误(两者显示的错误信息不一样)
Application.CreateForm(TDataModule4,DataModule4);
只要这个连接一建立,直接关掉login,或
procedure Tlogin.Button1Click(Sender: TObject);
begin
Application.Terminate;
end;
错误就会出现
--------------------------
错误"at address 77a4cc04 in module 'ole32.dll',read of address feeeefeeee"
Forms,
Unit1 in 'Unit1.pas' {Frmmain},
Unit2 in 'Unit2.pas' {frmLogin},
Unit3 in 'Unit3.pas' {Form3},
Unit4 in 'Unit4.pas' {DataModule4: TDataModule};{$R *.res}begin
Application.Initialize;
Application.CreateForm(TDataModule4,DataModule4);
with TfrmLogin.Create(Application) do
begin
ShowModal;
if ModalResult = 2 then
begin
Close ;
Application.Terminate;
end
else
if ModalResult = 1 then
begin
Close;
Application.CreateForm(TFrmmain, Frmmain);
Application.Run;
end;
end;
end.
---------------------------
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, DBGrids, DB,Unit4,ADODB ;type
TFrmmain = class(TForm)
Button1: TButton;
Button2: TButton;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
ADOQuery1: TADOQuery;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Frmmain: TFrmmain;implementationuses unit3;{$R *.dfm}procedure TFrmmain.Button1Click(Sender: TObject);
begin
Frmmain.Hide ;
Application.CreateForm(TForm3,Form3);
Form3.Show ;
end;procedure TFrmmain.Button2Click(Sender: TObject);
begin
ADOQuery1.Open ;
end;end.
------------------------------
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;type
TfrmLogin = class(TForm)
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Edit1: TEdit;
Edit2: TEdit;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
frmLogin: TfrmLogin;
i : Integer ;implementation{$R *.dfm}procedure TfrmLogin.BitBtn1Click(Sender: TObject);
begin
if (Edit1.Text = '1234') and (Edit2.Text = '1234') then
ModalResult := 1
else
begin
if i < 4 then
begin
inc(i) ;
Edit1.Text := '' ;
Edit2.Text := '' ;
Edit1.SetFocus ;
end
else
ModalResult := 2 ;
end ;
end;procedure TfrmLogin.BitBtn2Click(Sender: TObject);
begin
ModalResult := 2 ;
end;end.
--------------------------
unit Unit3;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TForm3 = class(TForm)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form3: TForm3;implementation{$R *.dfm}procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Application.Terminate ;
end;end.
-----------------
unit Unit4;interfaceuses
SysUtils, Classes, DB, ADODB;type
TDataModule4 = class(TDataModule)
ADOConnection1: TADOConnection;
procedure DataModuleCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
DataModule4: TDataModule4;implementation{$R *.dfm}procedure TDataModule4.DataModuleCreate(Sender: TObject);
begin
ADOConnection1.Open ;
end;end.