以下是代码
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, ADODB;type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Free;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
with  adoquery1 do
begin
close;
SQL.Clear;
Sql.Add('select * from test where (id=:a) and (code=:b) ');
parameters.ParamByName('a').Value:=Trim(edit1.Text);
parameters.ParamByName('b').Value:=Trim(edit2.Text);
open;
end;
if adoquery1.RecordCount>0 then
 application.MessageBox('登录成功!','提示',0+64)
 else
 application.MessageBox('用户名或密码不正确,请重新输入!','提示',0+64);  
end;end.unit Unit2;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls;type
  TForm2 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    Edit1: TEdit;
    Button1: TButton;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    ComboBox1: TComboBox;
    Button2: TButton;
    Button3: TButton;
    procedure N1DrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect;
      Selected: Boolean);
    procedure BANGZHU1DrawItem(Sender: TObject; ACanvas: TCanvas;
      ARect: TRect; Selected: Boolean);
    procedure FormPaint(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form2: TForm2;implementationuses Unit1;{$R *.dfm}procedure TForm2.N1DrawItem(Sender: TObject; ACanvas: TCanvas;
  ARect: TRect; Selected: Boolean);
begin
    ACanvas.FillRect(ARect);
                ACanvas.Font.Size:=10;         //设置为足够大的字号
                ACanvas.Font.Name:= '新宋体 ';     //设置为你喜欢的字体
                //输出菜单项
                ACanvas.TextOut(ARect.Left,ARect.Top,(Sender   as   TMenuItem).Caption);    end;procedure TForm2.BANGZHU1DrawItem(Sender: TObject; ACanvas: TCanvas;
  ARect: TRect; Selected: Boolean);
begin
ACanvas.FillRect(ARect);
                ACanvas.Font.Size:=10;         //设置为足够大的字号
                ACanvas.Font.Name:= '新宋体 ';     //设置为你喜欢的字体
                //输出菜单项
                ACanvas.TextOut(ARect.Left,ARect.Top,(Sender   as   TMenuItem).Caption);    
end;procedure TForm2.FormPaint(Sender: TObject);
var
pic:TBitmap;
pic2:TBitmap;begin
pic:=TBitmap.Create;
pic.LoadFromFile('b.bmp');
Canvas.Draw(0,450,pic);
pic.Free ;
pic2:=TBitmap.Create;
pic2.LoadFromFile('2.bmp');
Canvas.Draw(270,80,pic2);
pic2.Free ;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
Form1.Show;
end;procedure TForm2.N2Click(Sender: TObject);
begin
Form1.Show ;
end;end.

解决方案 »

  1.   

    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    Free;
    end;
    应该是这句的问题,应改成
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Action:=caFree;
      Form1:=nil;
    end;
      

  2.   

    普通窗体onClose事件不用写代码,或者写上一些释放资源的代码,但你这里的Free明显是错的如果是MDI,在onClose就用Action:=caFree;
    再在onDestroy加上Form1:=nil;