Delphi程序创建DataModule模块不成立弹出窗口。

时间:2022-09-28 12:23:28
在程序入口处。先检查DataModule模块上的数据库连接是否成功后再创建窗口。如果连接失败就弹出配置窗口。
Application.Initialize;
    Application.CreateForm(Tdtmdl1, dtmdl1);
    Application.CreateForm(Tinif, iniF);
  if TLoginForm.ShowForm then
    begin
      Application.CreateForm(TIDCardRead_F, IDCardRead_F);
      Application.CreateForm(TLeave, Leave);
      Application.CreateForm(Tlavel, lavel);
    end;
      Application.Run;

里面的Tdtmdl是DataModule。Tinif是配置窗口。TIDCardRead_F是程序主窗口。TLoginForm是登陆窗口。
怎么样实现呢?
procedure Tdtmdl1.DataModuleCreate(Sender: TObject);
var
  ini_FileName:string;
begin
  ini_FileName:=ExtractFilePath(Application.ExeName)+'conn.ini';
  if not FileExists(ini_FileName)then
  begin
    Application.MessageBox('数据库文件不存在','信息提示',MB_OK);
    Application.Terminate;
  end;
  with con1 do
  con1.ConnectionString:=Get_Db_Con_Str(ini_FileName);
  con1.Connected:=False;
  try
    con1.Connected:=True;
    except
       Application.MessageBox('数据库连接失败请联系管理员','信息提示',mb_ok);
      //在这里弹出窗口。
      end;
end;

这是DataModule的配置检查。

7 个解决方案

#1


procedure Tdtmdl1.DataModuleCreate(Sender: TObject);
var
  ini_FileName:string;
begin
  ini_FileName:=ExtractFilePath(Application.ExeName)+'conn.ini';
  if not FileExists(ini_FileName)then
  begin
    Application.MessageBox('数据库文件不存在','信息提示',MB_OK);
    Application.Terminate;
  end;
  with con1 do
  con1.ConnectionString:=Get_Db_Con_Str(ini_FileName);
  con1.Connected:=False;
  try
    con1.Connected:=True;
    except
       Application.MessageBox('数据库连接失败请联系管理员','信息提示',mb_ok);
      iniF:=TiniF.Create(Application);
       iniF.Show;
//这里弹出配置窗体。但是登陆窗体也同时弹出了。不知道上面原因。
      end;
end;

#2


以成功实现了。来个人接分吧

#3


实现的代码如下。还请指教下有上面其他方法

      Application.Initialize;
      Application.CreateForm(Tdtmdl1, dtmdl1);
      if not Assigned(iniF) then
        begin
            if TLoginForm.ShowForm then
            begin
              Application.CreateForm(TIDCardRead_F, IDCardRead_F);
              Application.CreateForm(TLeave, Leave);
              Application.CreateForm(Tlavel, lavel);
            end;
        end;
      Application.Run;

#4



Application.CreateForm(Tdtmdl1, dtmdl1);
if mrOk <> dtmdl1.isConnected then  //通过自定义函数isConnected检查数据模块连接是否成功
begin
  //不成功时, 打开配置窗口
  with TInfo.create(Application) do
  try
    if mrOk <> showmodal then //取消配置则退出程序
      Application.Terminate
  finally
    free;
  end;
end;

#5


Delphi程序创建DataModule模块不成立弹出窗口。

#6


引用 4 楼 simonhehe 的回复:
Application.CreateForm(Tdtmdl1, dtmdl1);
if mrOk <> dtmdl1.isConnected then  //通过自定义函数isConnected检查数据模块连接是否成功
begin
  //不成功时, 打开配置窗口
  with TInfo.create(Application) do
  try
    if mrOk <> showmodal then //取消配置则退出程序
      Application.Terminate
  finally
    free;
  end;
end;

谢谢。如果使用我的那种方法。是否正确?

#7


iniF.Show;
//这里弹出配置窗体。但是登陆窗体也同时弹出了。不知道上面原因。
---------------------------------------------------------------------------------
改成showmodal;



引用 6 楼 zhangzhen_927116 的回复:
Quote: 引用 4 楼 simonhehe 的回复:


Application.CreateForm(Tdtmdl1, dtmdl1);
if mrOk <> dtmdl1.isConnected then  //通过自定义函数isConnected检查数据模块连接是否成功
begin
  //不成功时, 打开配置窗口
  with TInfo.create(Application) do
  try
    if mrOk <> showmodal then //取消配置则退出程序
      Application.Terminate
  finally
    free;
  end;
end;

谢谢。如果使用我的那种方法。是否正确?

正确, 两个实现都可以达到目的.

#1


procedure Tdtmdl1.DataModuleCreate(Sender: TObject);
var
  ini_FileName:string;
begin
  ini_FileName:=ExtractFilePath(Application.ExeName)+'conn.ini';
  if not FileExists(ini_FileName)then
  begin
    Application.MessageBox('数据库文件不存在','信息提示',MB_OK);
    Application.Terminate;
  end;
  with con1 do
  con1.ConnectionString:=Get_Db_Con_Str(ini_FileName);
  con1.Connected:=False;
  try
    con1.Connected:=True;
    except
       Application.MessageBox('数据库连接失败请联系管理员','信息提示',mb_ok);
      iniF:=TiniF.Create(Application);
       iniF.Show;
//这里弹出配置窗体。但是登陆窗体也同时弹出了。不知道上面原因。
      end;
end;

#2


以成功实现了。来个人接分吧

#3


实现的代码如下。还请指教下有上面其他方法

      Application.Initialize;
      Application.CreateForm(Tdtmdl1, dtmdl1);
      if not Assigned(iniF) then
        begin
            if TLoginForm.ShowForm then
            begin
              Application.CreateForm(TIDCardRead_F, IDCardRead_F);
              Application.CreateForm(TLeave, Leave);
              Application.CreateForm(Tlavel, lavel);
            end;
        end;
      Application.Run;

#4



Application.CreateForm(Tdtmdl1, dtmdl1);
if mrOk <> dtmdl1.isConnected then  //通过自定义函数isConnected检查数据模块连接是否成功
begin
  //不成功时, 打开配置窗口
  with TInfo.create(Application) do
  try
    if mrOk <> showmodal then //取消配置则退出程序
      Application.Terminate
  finally
    free;
  end;
end;

#5


Delphi程序创建DataModule模块不成立弹出窗口。

#6


引用 4 楼 simonhehe 的回复:
Application.CreateForm(Tdtmdl1, dtmdl1);
if mrOk <> dtmdl1.isConnected then  //通过自定义函数isConnected检查数据模块连接是否成功
begin
  //不成功时, 打开配置窗口
  with TInfo.create(Application) do
  try
    if mrOk <> showmodal then //取消配置则退出程序
      Application.Terminate
  finally
    free;
  end;
end;

谢谢。如果使用我的那种方法。是否正确?

#7


iniF.Show;
//这里弹出配置窗体。但是登陆窗体也同时弹出了。不知道上面原因。
---------------------------------------------------------------------------------
改成showmodal;



引用 6 楼 zhangzhen_927116 的回复:
Quote: 引用 4 楼 simonhehe 的回复:


Application.CreateForm(Tdtmdl1, dtmdl1);
if mrOk <> dtmdl1.isConnected then  //通过自定义函数isConnected检查数据模块连接是否成功
begin
  //不成功时, 打开配置窗口
  with TInfo.create(Application) do
  try
    if mrOk <> showmodal then //取消配置则退出程序
      Application.Terminate
  finally
    free;
  end;
end;

谢谢。如果使用我的那种方法。是否正确?

正确, 两个实现都可以达到目的.