登陆的关闭按扭BitCancleClick没有报错:相关代码如下
procedure TLogin.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
 if Application.MessageBox('请确认是否退出本系统','提示信息',mb_iconquestion+ mb_YesNo)=idyes then
  application.Terminate
  else
  CanClose:=false;
end;procedure TLogin.BitCancleClick(Sender: TObject);
begin
self.Close;
end;关闭主程序出错了:代码如下
procedure TmainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if Application.MessageBox('请确认是否退出本系统','提示信息',MB_ICONQUESTION+MB_YESNO) = IDYES then
     begin
     Application.Terminate;
     end
    else
     CanClose:=False;
end;
procedure TmainForm.ToolButton12Click(Sender: TObject);
begin
self.Close;
end;出错提示:
access violation  at   address 00403dc6 in module "xxx.exe" read of  address ffffff00 

解决方案 »

  1.   

    self都关闭了
    当然会出错的啊
      

  2.   

    根据你的要求,做如下修改:
    //工程文件
    program Project1;uses
      Forms,
      Controls,
      Unit1 in 'Unit1.pas' {mainForm},
      Unit2 in 'Unit2.pas' {LoginForm};{$R *.res}begin
      Application.Initialize;
      Application.CreateForm(TmainForm, mainForm);
      Application.ShowMainForm := False;
      LoginForm := TLoginForm.Create(Application);
      if LoginForm.ShowModal <> mrOK then
        mainForm.Close
      else
        mainForm.Show;
      Application.Run;
    end.
      

  3.   

    //登录窗体
    unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Buttons;type
      TLoginForm = class(TForm)
        BitOK: TBitBtn;
        BitCancel: TBitBtn;
        procedure BitCancelClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      LoginForm: TLoginForm;implementation{$R *.dfm}procedure TLoginForm.BitCancelClick(Sender: TObject);
    begin
      if Application.MessageBox('请确认是否退出本系统','提示信息',mb_iconquestion+ mb_YesNo)=idyes then
        ModalResult := mrCancel
      else
        ModalResult := mrNone;
    end;end.
      

  4.   

    //主窗体
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TmainForm = class(TForm)
        procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      mainForm: TmainForm;implementation{$R *.dfm}procedure TmainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
      if Visible then
        CanClose := Application.MessageBox('请确认是否退出本系统','提示信息',MB_ICONQUESTION+MB_YESNO) = IDYES
      else
        CanClose := True;
    end;end.
      

  5.   

    回复:gobiz(拔剑容易收剑难) 
    //登录窗体
    procedure TLoginForm.BitOKClick(Sender: TObject);
     if trim(LoginADOTable.fieldbyname('password').asstring)=pwdEdit.Text then
       begin
       LoginForm.ModalResult:=mrOK;
      end
       else
          begin
              Application.MessageBox(PChar('口令有误,请重新输入'),'登录提示');
              pwdEdit.Clear;
              pwdEdit.SetFocus;
          end;
    出错:当出现'口令有误,请重新输入'提示时,程序正常进入主窗体,也就是说密码错的也可以进入主窗体;
      

  6.   

    去把BitOK的属性面板中的ModalResult设置为mrNone!