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

zhangzhen_927116 2013-09-16 10:53:43
在程序入口处。先检查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的配置检查。
...全文
190 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
simonhehe 2013-09-17
  • 打赏
  • 举报
回复
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;
谢谢。如果使用我的那种方法。是否正确?[/quote] 正确, 两个实现都可以达到目的.
zhangzhen_927116 2013-09-16
  • 打赏
  • 举报
回复
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;
zhangzhen_927116 2013-09-16
  • 打赏
  • 举报
回复
引用 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;
谢谢。如果使用我的那种方法。是否正确?
reverzeng 2013-09-16
  • 打赏
  • 举报
回复
simonhehe 2013-09-16
  • 打赏
  • 举报
回复
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;
zhangzhen_927116 2013-09-16
  • 打赏
  • 举报
回复
实现的代码如下。还请指教下有上面其他方法

      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;
zhangzhen_927116 2013-09-16
  • 打赏
  • 举报
回复
以成功实现了。来个人接分吧

16,749

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧