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.

解决方案 »

  1.   

    procedure Tclientlogin.BitBtn1Click(Sender: TObject);
    begin
    modalresult := mrok;
    end;
    直接这样子也会出现同样的错误
      

  2.   

    program Project1;uses
      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.
      

  3.   

    program Project1;uses
      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.
      

  4.   

    Application.CreateForm(Tclientmain, clientmain);
    这个你创建了两次..
      

  5.   

    当出现login后立即关掉窗口就出现错误"at address 77a4cc04 in module 'ole32.dll',read of address feeeefeeee"
    --------------------------------------------------------------TLogin.FormClose :  Application.Terminate ;
      

  6.   

    还是不行,以前我用bde时是可以的,会不会我用ado后才出现的问题呢
      

  7.   

    我现在把数据模板中的ado去掉,然后换成Database1,连上后面的数据库(ms sql server ),结果是好了,能告诉我这是什么原因吗?
      

  8.   

    wjlsmail(计算机质子) :
      我想请你试一下
    数据模板中分别放以下几种情况
      1:ADOConnection1,用它来连接后台数据库
      2:Database1,用它来连接后台数据库
      3:DCOMConnection1,连接远程应用程序服务器
    结果直接关掉出1正确,2,3错误(两者显示的错误信息不一样)
      

  9.   

    觉得程序结构和所用的数据库驱动没有关系 ,加一个DM 没有出错  Application.Initialize;
      Application.CreateForm(TDataModule4,DataModule4);
      

  10.   

    dm.DCOMConnection1.Connected:=true;
    只要这个连接一建立,直接关掉login,或
    procedure Tlogin.Button1Click(Sender: TObject);
    begin
    Application.Terminate;
    end;
    错误就会出现
    --------------------------
    错误"at address 77a4cc04 in module 'ole32.dll',read of address feeeefeeee"
      

  11.   

    program Project1;uses
      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.