工程文件如下:
Application.Initialize;
Application.CreateForm(TFmain, Fmain);
Application.CreateForm(TDB_Module, DB_Module);
Application.ShowMainForm:=false;
Frmlogon:=TFrmlogon.Create(Frmlogon);
Frmlogon.Show();
Application.Run;Fmain为主窗口,DB_Module为数据窗口,frmlogon为登录窗口为什么在登录窗口frmlogon中的数据控件无法使用DB_Module中的数据库连接控件,也不可以设置主窗口Fmain中各功能菜单的属性,即设定权限;要如何设计?
Application.Initialize;
Application.CreateForm(TFmain, Fmain);
Application.CreateForm(TDB_Module, DB_Module);
Application.ShowMainForm:=false;
Frmlogon:=TFrmlogon.Create(Frmlogon);
Frmlogon.Show();
Application.Run;Fmain为主窗口,DB_Module为数据窗口,frmlogon为登录窗口为什么在登录窗口frmlogon中的数据控件无法使用DB_Module中的数据库连接控件,也不可以设置主窗口Fmain中各功能菜单的属性,即设定权限;要如何设计?
解决方案 »
- 急,在线等!!!将导出Excel写在自定义的Thread中出现问题, CoInitialize尚未被呼叫
- 怎样获取内存?
- delphi SQL Server不存在或拒绝访问
- 请问调用默认邮件发送程序,发送指定附件
- InterBase7.1的驱动哪里有?
- 请斑主进来,审核后的FAQ提交内容被删除,FAQ主要解答人所得分扣除!上次FAT过的东西总信誉分加了,但DELPHI版的信誉分又没加,为什么要扣
- 近日在网上发现一个很奇怪的程序,程序的主要功能是显示和编辑表中memo字段的数据的
- 问题
- 紧急求助:flash技术问题?????????
- 支持中文的滚动LED面板??LED是什么??
- delphi exe文件的移植问题
- delphi 一个字符的长度是多少
procedure TFrmlogon.btlogonClick(Sender: TObject);
var
action:array[1..100] of TAction;
i:integer;
begin
with DBuserlogon do
begin
close;
sql.Clear;
if trim(yhm.Text)<>'' then
begin
sql.Add('select * from T_users where userid='+''''+trim(yhm.Text)+'''');
open;
end
else
if trim(zwm.Text)<>'' then
begin
sql.Add('select * from T_users where username='+''''+trim(zwm.Text)+'''');
open;
end
else
begin
bsSkinMessage1.MessageDlg('请输入登录帐户或用户名!',mtwarning, [mbYes], 0);
exit;
end;
end;
if ErrTime>=2 then
begin
Application.Terminate;
end;
if password.Text <> Explain(DBuserlogon.fieldbyname('password').AsString) then
begin
inc(ErrTime);
bsSkinMessage1.MessageDlg('密码错误,请重新输入!',mtWarning,[mbyes],0);
password.Text:='';
Exit;
end; application.ShowMainForm:=true;
Fmain.Show();end;没问题可是在 application.ShowMainForm:=true;
Fmain.Show();前后对Fmain增加actionlist的设置就出现错误
Login窗体在MainForm.Create的时候显示。
Frmlogon:=TFrmlogon.Create(Frmlogon);
Frmlogon.Showmodle;
最后再
Application.CreateForm(TFmain, Fmain);
去掉 application.ShowMainForm看看
Application.CreateForm(TDB_Module, DB_Module);
Application.CreateForm(TFmain, Fmain);
Frmlogon:=TFrmlogon.Create(Frmlogon);
Frmlogon.ShowModal;
Application.Run;这样以后,登录窗口显示之前已经提示出错
Application.Initialize;
Application.CreateForm(TDB_Module, DB_Module);
Application.CreateForm(TFmain, Fmain); Application.ShowMainForm:=false;
Frmlogon:=TFrmlogon.Create(Frmlogon);
Frmlogon.Show;
Application.Run;
end.
运行后提示 Access violation at address 007BF02A 错误提示换过来下面的代码就一切正常
begin
Application.Initialize;
Application.CreateForm(TFmain, Fmain);
Application.CreateForm(TDB_Module, DB_Module);
Application.ShowMainForm:=false;
Frmlogon:=TFrmlogon.Create(Frmlogon);
Frmlogon.Show;
Application.Run;
end.郁闷哦
Frmlogon.Show;
这个写到你的主窗体的OnShow事件看看
Application.Initialize;
//frmlogin:=tfrmlogin.Create(nil);
Application.Title := '信息平台';
Application.CreateForm(Tcdm, cdm);
Application.CreateForm(TFrmMain, FrmMain);
Application.CreateForm(Tfrmlogin, frmlogin);
if frmlogin.ShowModal=mrOk then
begin Application.CreateForm(TFrmAbout, FrmAbout);
Application.CreateForm(TFrmHis, FrmHis);
Application.CreateForm(TFrmDdgl, FrmDdgl); Application.Run;
FrmDdgl.Show;
FrmDdgl.BringToFront;
FrmDdgl.ActiveMDIChild; end
else
application.Terminate;
end.
然后在main窗口中调用:
我的代码是这样的:function getuserid(var zname,dname:string;var ldate:tdate;var usercode,username:string):boolean;
begin
with TLoginform.Create(Application) do
begin
Result :=ShowModal = mrOK;
if result then
begin
usercode:=u;
zname:=z;
dname:=d;
username:=un;
ldate:=cbdate.Date;
end;
end;
end;
上面的是登录窗口中用于被访问的函数。 if getuserid(zname,dname,ldate,usercode,username) then
begin
StatusBar1.Panels.Items[0].Text:='帐套:'+zname;
end; 下面是在main窗口的show事件中写的。
这样的话,在登录窗口打开的时候,实际上main窗口已经显示 ,只是看不到。。
project2 :program Project2;uses
Forms,
ZConnection,
DB,
ZAbstractRODataset,
ZAbstractDataset,
ZDataset,
Controls,
SysUtils,
DCPcrypt2,
DCPblockciphers,
DCPdes,
iniFiles,
DCPsha1,
login in 'login.pas' {loginForm},
main in 'main.pas' {mainForm},
systemSet in 'systemSet.pas' {systemSetForm},
usersManage in 'usersManage.pas' {UserManageForm},
addUser in 'addUser.pas' {AddUserForm},
modifyUser in 'modifyUser.pas' {ModifyUserForm},
productionsManage in 'productionsManage.pas' {productionsManageForm},
addproduction in 'addproduction.pas' {addProductionForm},
modifyproduction in 'modifyproduction.pas' {modifyProductionForm},
newCustomer in 'newCustomer.pas' {newCustomerForm},
addMoney in 'addMoney.pas' {AddMoneyForm},
modifycustomer in 'modifycustomer.pas' {ModifyCustomerForm},
changCard in 'changCard.pas' {changCardForm},
balanceQuery in 'balanceQuery.pas' {balanceQueryForm},
tradeListQuery in 'tradeListQuery.pas' {tradeListQueryForm},
customerPasswordChang in 'customerPasswordChang.pas' {customerPasswordChangForm},
deleteCustomer in 'deleteCustomer.pas' {deleteCustomerForm};{$R *.res}
begin Application.Initialize;
loginForm := TloginForm.Create(application);
SystemDataBaseConnect := Tzconnection.Create(application);
SystemDataBaseQuery := Tzquery.Create(application); myIniFile := TiniFile.Create(extractfilepath(application.ExeName) + 'config.ini');
databaseAddress := myIniFile.ReadString('SystemSet', 'DatabaseAddress', 'tqscsxRabnsB');
databaseName := myIniFile.ReadString('SystemSet', 'DatabaseName', 'UzhbseyL');
databaseUser := myIniFile.ReadString('SystemSet', 'DatabaseUser', 'KENjbQ==');
databasePassword := myIniFile.ReadString('SystemSet', 'DatabasePassword', 'l5JrBKDaZ3+i');
databaseProtocol := myIniFile.ReadString('SystemSet', 'DatabaseProtocol', '9bigWGEnVxo='); Encrypt := TDCP_3des.Create(application);
Encrypt.InitStr('SystemSet DatabaseAddress', TDCP_sha1);
databaseAddress := Encrypt.DecryptString(databaseAddress);
databaseName := Encrypt.DecryptString(databaseName);
databaseUser := Encrypt.DecryptString(databaseUser);
databasePassword := Encrypt.DecryptString(databasePassword);
databaseProtocol := Encrypt.DecryptString(databaseProtocol);
Encrypt.Burn;
Encrypt.Free;
myiniFile.Free;
with SystemDataBaseConnect do
begin
HostName := databaseAddress;
Database := databaseName;
User := databaseUser;
Password := databasePassword;
Protocol := databaseProtocol;
end;
SystemDataBaseQuery.Connection := SystemDataBaseConnect;
if loginform.ShowModal = mrok then
begin
loginform.Free;
Application.Title := 'XXXXXX系统';
Application.CreateForm(TmainForm, mainForm);
Application.Run;
end;
end.login.pas
unit login;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, jpeg, ZSqlMonitor, ZConnection, DB,
ZAbstractRODataset, ZAbstractDataset, ZDataset, iniFiles, DCPcrypt2,
DCPblockciphers, DCPdes, DCPsha1;type
TloginForm = class(TForm)
Image1: TImage;
UserNameEdit: TLabeledEdit;
UserPassWordEdit: TLabeledEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;var
loginForm: TloginForm;
SystemDataBaseConnect: TZconnection;
SystemDataBaseQuery: TZquery; myinifile: TiniFile;
Encrypt: TDCP_3des;
databaseAddress, databaseName, databaseUser, databasePassword, databaseProtocol: string;
DatabaseBackUpSet: integer;
DatabaseBackUpSetTime: TTime;
userName, userPassword, userTrueName: string;
userCapacity: integer;implementation{$R *.dfm}procedure TloginForm.BitBtn1Click(Sender: TObject);
begin
userName := trim(UserNameEdit.Text);
userPassword := trim(UserPassWordEdit.Text);
if ((userName <> '') and (userPassword <> '')) then
begin SystemDataBaseQuery.Close;
SystemDataBaseQuery.SQL.Clear;
SystemDataBaseQuery.SQL.Add('SET NAMES GBK');
SystemDataBaseQuery.ExecSQL; SystemDataBaseQuery.SQL.Clear;
SystemDataBaseQuery.SQL.Add('select md5(''' + userPassword + ''')from users ');
SystemDataBaseQuery.Open;
userPassword := SystemDataBaseQuery.Fields[0].AsString;
SystemDataBaseQuery.SQL.Clear;
SystemDataBaseQuery.SQL.Add('select userPassword,userCapacity,userTrueName from users where userName= ''' + userName + ''' and userStatus =1');
SystemDataBaseQuery.Open; if SystemDataBaseQuery.Fields[0].AsString = userPassword then
begin
userCapacity := SystemDataBaseQuery.Fields[1].AsInteger;
userTrueName := SystemDataBaseQuery.Fields[2].Asstring;
modalResult := mrok;
end
else
MessageDlg('用户名密码错误!!', mtError, [mbok], 0); SystemDataBaseQuery.Close;
end else
MessageDlg('请输入用户名和密码', mtError, [mbok], 0);end;procedure TloginForm.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
if modalresult <> mrok then
begin
if MessageDlg('确定退出本系统?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
canclose := true
else
canclose := false;
end;
end;end.
不一定非要把数据库连接组件放在数据模块中.
try
loginForm.ShowModal;
finally
loginForm.Free;
end; if not loginForm.bIfLoginSuccess then
begin
Application.Terminate;
end; //调用主窗口
Application.CreateForm(TFormMain, FormMain);
Application.Run;