程序启动顺序及连接SQL Server数据库问题 我程序的启动顺序为frmSplash -> TDataModule(TADOConnection连接SQL Server数据库) -> (1.连接失败)Application.Terminate(打开数据库连接工具DBLinker.exe) -> (2.连接成功)frmLogin -> frmMain其中frmMain为系统主窗口。不知道怎样实现最好,请高人指教! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 procedure TFrmDm.DataModuleCreate(Sender: TObject);var serverName, databaseName, userName, password: string;begin try readFromIni(serverName, databaseName, userName, password); ADOConnection1.ConnectionString := SADOContStr; ADOConnection1.Connected := true; except FrmDBConnect := TfrmDBConnect.Create(nil); FrmDBConnect.ShowModal; end;end; FrmDBConnect 为自己设计的数据库配置窗体unit DBConnectFrm;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons, INIFiles;type TfrmDBConnect = class(TForm) Panel1: TPanel; Panel2: TPanel; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; edtServerName: TEdit; edtDatabaseName: TEdit; edtUserName: TEdit; edtPassword: TEdit; SpbntOk: TSpeedButton; SpbtnCancel: TSpeedButton; procedure FormCreate(Sender: TObject); procedure SpbntOkClick(Sender: TObject); procedure SpbtnCancelClick(Sender: TObject); private { Private declarations } public { Public declarations } end;procedure WriteToIni(const aServerName, aDatabaseName, aUserName, aPassword: string);//向配置文件写入信息function DBConnectExecute(aClass: TFormClass): boolean; //用于打开窗体,并判断是否配置成功----------注意创建顺序 参考如下代码: Application.Initialize; Application.Title := '计量器具管理系统'; Application.CreateForm(TFrmMain, FrmMain); Application.CreateForm(TFrmDm, FrmDm); if IsLogin = 1 then Application.Terminate; if TFrmLogin.ExecLogin then Application.Run else Application.Terminate;var Connected: Boolean; frmDBConnect : tfrmDBConnect;implementationuses Main,PubFuntion, Login, DM, GlobalUnit;{$R *.dfm}//用于打开窗体,并判断是否配置成功function DBConnectExecute(aClass: TFormClass): boolean;begin with aClass.Create(Application) do begin try showModal; finally free; result := Connected; end; end;end; //向配置文件写入信息procedure WriteToIni(const aServerName, aDatabaseName, aUserName, aPassword: string);var IniFile: TIniFile; FileName: string;begin FileName := ExtractFilePath(application.ExeName) + '\DB.ini'; IniFile := TIniFile.Create(FileName); IniFile.WriteString('DB', 'ServerName', aServerName); IniFile.WriteString('DB', 'DatabaseName', aDatabaseName); IniFile.WriteString('DB', 'UserName', aUserName); IniFile.WriteString('DB', 'Password', Encrypt(aPassword)); IniFile.Free;end;//当窗体被创建时,将配置文件信息显示到窗体上procedure TfrmDBConnect.FormCreate(Sender: TObject);var serverName, databaseName, userName, password: string;// FileName: string;begin //FileName := ExtractFilePath(application.ExeName) + '\DB.ini'; // if FileExists(FileName) then readFromIni(serverName, databaseName, userName, password); Connected := False;end;//写入ini,并测试是否连接上procedure TfrmDBConnect.SpbntOkClick(Sender: TObject);var serverName, databaseName, userName, password: string;begin writeToIni(edtServerName.Text, edtDatabaseName.Text, edtUserName.Text, edtPassword.Text); readFromIni(serverName, databaseName, userName, password); FrmDm.ADOConnection1.ConnectionString := SADOContStr; FrmDm.ADOConnection1.Connected := true; if FrmDm.DBConnect() then begin Application.MessageBox('连接成功!', '提示', mb_iconInformation + mb_defbutton1); Connected := True; Close; end else begin Application.MessageBox('连接失败!', '提示', mb_iconInformation + mb_defbutton1); end;end;procedure TfrmDBConnect.SpbtnCancelClick(Sender: TObject);begin close; IsLogin := 1;end;end. 你的逻辑不是很清楚吗创建flash创建TDataModule,执行数据库连接,如果连接失败Application.Terminate如果连接成功创建frmLogin ,登录成功创建frmMain释放flash 刚才 恢复时有部分代码乱了顺序---------- 注意创建顺序 参考如下代码: Application.Initialize; Application.Title := '计量器具管理系统'; Application.CreateForm(TFrmMain, FrmMain); Application.CreateForm(TFrmDm, FrmDm); if IsLogin = 1 then Application.Terminate; if TFrmLogin.ExecLogin then Application.Run else Application.Terminate; 这部分抽出来,是工程的View source中部分代码 关于ini读取错误问题? 主 题: 如何使用,循环,adoquery,adotable,adostoredpro.如何用参数 delphi7在winxp和windows server2003下的窗体调用问题? 如何得知ADOQuery是否DisableControls? 问个关于面向对象的问题。 求助,关于不同分辨率下的问题!!!!! 求解压缩程序的代码 简单问题,进者有分。 怎样给在一个Treeview 加一个背景图片,? 这个sql句子怎么写? 插入数据行 请问ADO怎样和oracle数据库表关联并插入记录?谢谢
var
serverName, databaseName, userName, password: string;
begin
try
readFromIni(serverName, databaseName, userName, password);
ADOConnection1.ConnectionString := SADOContStr;
ADOConnection1.Connected := true;
except
FrmDBConnect := TfrmDBConnect.Create(nil);
FrmDBConnect.ShowModal;
end;
end; FrmDBConnect 为自己设计的数据库配置窗体unit DBConnectFrm;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons, INIFiles;type
TfrmDBConnect = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
edtServerName: TEdit;
edtDatabaseName: TEdit;
edtUserName: TEdit;
edtPassword: TEdit;
SpbntOk: TSpeedButton;
SpbtnCancel: TSpeedButton;
procedure FormCreate(Sender: TObject);
procedure SpbntOkClick(Sender: TObject);
procedure SpbtnCancelClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
procedure WriteToIni(const aServerName, aDatabaseName, aUserName, aPassword: string);//向配置文件写入信息function DBConnectExecute(aClass: TFormClass): boolean; //用于打开窗体,并判断是否配置成功----------
注意创建顺序 参考如下代码:
Application.Initialize;
Application.Title := '计量器具管理系统';
Application.CreateForm(TFrmMain, FrmMain);
Application.CreateForm(TFrmDm, FrmDm);
if IsLogin = 1 then
Application.Terminate;
if TFrmLogin.ExecLogin then Application.Run
else Application.Terminate;var
Connected: Boolean;
frmDBConnect : tfrmDBConnect;
implementationuses Main,PubFuntion, Login, DM, GlobalUnit;{$R *.dfm}
//用于打开窗体,并判断是否配置成功
function DBConnectExecute(aClass: TFormClass): boolean;
begin
with aClass.Create(Application) do
begin
try
showModal;
finally
free;
result := Connected;
end;
end;
end; //向配置文件写入信息
procedure WriteToIni(const aServerName, aDatabaseName, aUserName, aPassword: string);
var
IniFile: TIniFile;
FileName: string;
begin
FileName := ExtractFilePath(application.ExeName) + '\DB.ini';
IniFile := TIniFile.Create(FileName);
IniFile.WriteString('DB', 'ServerName', aServerName);
IniFile.WriteString('DB', 'DatabaseName', aDatabaseName);
IniFile.WriteString('DB', 'UserName', aUserName);
IniFile.WriteString('DB', 'Password', Encrypt(aPassword));
IniFile.Free;
end;//当窗体被创建时,将配置文件信息显示到窗体上
procedure TfrmDBConnect.FormCreate(Sender: TObject);
var
serverName, databaseName, userName, password: string;
// FileName: string;
begin
//FileName := ExtractFilePath(application.ExeName) + '\DB.ini';
// if FileExists(FileName) then
readFromIni(serverName, databaseName, userName, password);
Connected := False;
end;//写入ini,并测试是否连接上
procedure TfrmDBConnect.SpbntOkClick(Sender: TObject);
var
serverName, databaseName, userName, password: string;
begin
writeToIni(edtServerName.Text, edtDatabaseName.Text, edtUserName.Text, edtPassword.Text);
readFromIni(serverName, databaseName, userName, password);
FrmDm.ADOConnection1.ConnectionString := SADOContStr;
FrmDm.ADOConnection1.Connected := true;
if FrmDm.DBConnect() then
begin
Application.MessageBox('连接成功!', '提示', mb_iconInformation + mb_defbutton1);
Connected := True;
Close;
end
else
begin
Application.MessageBox('连接失败!', '提示', mb_iconInformation + mb_defbutton1);
end;
end;procedure TfrmDBConnect.SpbtnCancelClick(Sender: TObject);
begin
close;
IsLogin := 1;
end;end.
创建flash
创建TDataModule,执行数据库连接,如果连接失败Application.Terminate
如果连接成功
创建frmLogin ,登录成功创建frmMain
释放flash
注意创建顺序 参考如下代码:
Application.Initialize;
Application.Title := '计量器具管理系统';
Application.CreateForm(TFrmMain, FrmMain);
Application.CreateForm(TFrmDm, FrmDm);
if IsLogin = 1 then
Application.Terminate;
if TFrmLogin.ExecLogin then Application.Run
else Application.Terminate; 这部分抽出来,是工程的View source中部分代码