主窗口的代码:
unit main;
interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, DB, ADODB;type
  Tmain_Form = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    N11: TMenuItem;
    N12: TMenuItem;
    ADOConnection1: TADOConnection;
    procedure N3Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure N2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  main_Form: Tmain_Form;implementation{$R *.dfm}
uses usergl;
procedure Tmain_Form.N3Click(Sender: TObject);
begin
  close;
end;procedure Tmain_Form.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if  messageDlg('真的要退出业绩管理系统?',mtConfirmation,[mbYes,mbNo],0)=mrYes then
    Action:=caFree
  else
    Action:=caNone;
end;procedure Tmain_Form.N2Click(Sender: TObject);
begin
 Application.CreateForm(Tusergl_form,usergl_Form);
 usergl_form.Show;
end;end.子窗口的代码
unit usergl;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Mask, DBCtrls, Grids, DBGrids, DB, ADODB;type
  Tusergl_Form = class(TForm)
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    oldmm_edit: TEdit;
    newmm_edit: TEdit;
    qrmm_edit: TEdit;
    btn_ok: TButton;
    btn_cancel: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    DBGrid1: TDBGrid;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    RadioBtn1: TRadioButton;
    RadioBtn2: TRadioButton;
    DataSource1: TDataSource;
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    procedure FormCreate(Sender: TObject);
    procedure RadioBtn1Click(Sender: TObject);
    procedure RadioBtn2Click(Sender: TObject);
    procedure btn_okClick(Sender: TObject);
    procedure btn_cancelClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  usergl_Form: Tusergl_Form;implementation{$R *.dfm}
 //uses main;
procedure Tusergl_Form.FormCreate(Sender: TObject);
begin
    
 with  ADOQuery1.Create(nil) do
     try
       close;
       SQL.Clear;
       SQL.Add('select* from usergl');
       open;
     finally
        free;
     end;   end;procedure Tusergl_Form.RadioBtn1Click(Sender: TObject);
begin
  newmm_edit.Visible:=true;
  qrmm_edit.Visible:=true;
  label2.Visible:=true;
  label3.Visible:=true;
end;procedure Tusergl_Form.RadioBtn2Click(Sender: TObject);
begin
 newmm_edit.Visible:=False;
  qrmm_edit.Visible:=False;
  label2.Visible:=False;
  label3.Visible:=False;
end;procedure Tusergl_Form.btn_okClick(Sender: TObject);
var
  oldmm,newmm,qrmm,xm:string;
begin
  newmm:=Trim(newmm_edit.Text);
  qrmm:=Trim(qrmm_edit.Text);
  //检查是否处于修改
  if  radioBtn1.Checked  then
      begin
       // 检查修改的新密码合法性
        if (length(newmm)<6) or (length(newmm)>12) then
           begin
             ShowMessage('密码要由6~~~~12位数字组成,请重输');
             newmm_edit.SelectAll;
           end;
         //检查新密码与确认密码是否一致
        if newmm<>qrmm  then
           begin
             ShowMessage('    ');
             newmm_edit.SelectAll;
           end;
   oldmm:=Trim(oldmm_edit.Text);
   ADOQuery1.Close;
   ADOQuery1.SQL.Clear;
   ADOQuery1.SQL.Add('select* from where(mm='''+oldmm+''')');
   ADOQuery1.Open;
   if ADOQuery1.RecordCount>0 then
     begin
      ADOQUERY1.FieldByName('MM').AsString:=newmm;
      ShowMessage('添加成功');
      newmm_edit.Clear;
      qrmm_edit.Clear;
     end
   else
     showMessage('系统不存在此用户');
   end
 else
   begin
     ADOQuery1.FieldByName('mm').AsString:=oldmm;
     showMessage('添加成功');
     oldmm_edit.Clear;
   end;
end;procedure Tusergl_Form.btn_cancelClick(Sender: TObject);
begin
  ADOQuery1.Delete;
  ADOQuery1.Edit;
  ADOQuery1.Post;
end;procedure Tusergl_Form.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
Action:=caFree;end;end.
当我调用USERGL窗口时出现以示警告(Pr_main  Missing connection or connetionstring),并死机,请各位楼主帮手分析啊,初学姐,我已设好一运行应用程序时首先出现主窗口

解决方案 »

  1.   

    没有仔细看我的代码做MDI窗体,你只需要将主窗体的FormStyle设置为:fsMDIForm
    而将子窗体的FormStyle设置为:fsMDIChild即可再有就是在程序退出时,退出的检查代码应该写在FromCloseQuery中至于窗体登录,你应该写在主窗体创建的时候,或许这样会好一些
      

  2.   

    当我调用USERGL窗口时出现以示警告(Pr_main  Missing connection or connetionstring),翻译:pr_main(窗体)没有设置Connection或者Connectionstring属性.
      

  3.   

    pr_main打开的时候一定连接了数据库,而此时数据库还没有连接