解决什么呢?
我不觉得你遇到什么问题……但是所有的窗体都是showmodal,使用起来比较不爽……反正我是这样。

解决方案 »

  1.   

    二 Formi := TFormi.create();
     try
          Formi.showmodule;
     finally
          Formi.free...;
     end;
      

  2.   

    问题1:program project1;uses
      Forms,
      Main in 'MAIN.PAS' {MainForm},
      Log in 'Log.pas' {LoginForm};{$R *.RES}begin
      Application.Initialize;
      Application.ShowMainForm:=false; // Here!!
      Application.CreateForm(TMainForm, MainForm);
      Application.CreateForm(TLoginForm, LoginForm);
      Application.Run;
    end.unit Log;interfaceuses
      Windows, ...type
      TLoginForm = class(TForm)
        BitBtn1: TBitBtn;
        BitBtn2: TBitBtn;
        procedure BitBtn1Click(Sender: TObject);
        procedure BitBtn2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      LoginForm:TLoginForm;implementation{$R *.DFM}uses
      Main;procedure TLoginForm.BitBtn1Click(Sender: TObject);
    begin
      if Edit1.Text='' then
      begin
        MessageDlg('请输入密码!',mtConfirmation,[mbOK],0);
        exit;
      end;
      if ValidatPwd(Edit1.Text)=false then //密码验证过程
      begin
        MessageDlg('密码错误,请重新输入!',mtConfirmation,[mbOK],0);
        exit;
      end;
      MainForm.Show; // Here!!
      Free;
    end;
    procedure TLoginForm.BitBtn2Click(Sender: TObject);
    begin
      Application.Terminate; //退出程序
    end;end.
      

  3.   

    问题二:没怎么明白您的意思;
    问题三:楼上同学意见不错.创建一个数据模块,将您的表放到其中,在需要操作表的单元中只需引用该模块,然后try  datamodel1.table1.open ;except datamodel1.table1.close;就ok了
      

  4.   

    第一个问题:
    在主窗体的show事件里加入登录窗体(fmLogin,含确定和取消按钮)的创建和显示 ,如果用户按了确定按钮并且通过验证的话则继续运行,否则程序退出。
    procedure TfmMain.FormShow(Sender: TObject);
    begin
       fmLogin:=TfmLogin.Create(Application);
       if fmlogin.showmodal<>mrok then
          Application.Terminate;
    end;
    登录窗体的程序的程序...
    unit Login;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, ExtCtrls, Buttons, DBCtrls, Mask, ToolEdit, RxLookup, jpeg;type
      TfmLogin = class(TForm)
        GroupBox1: TGroupBox;
        Label1: TLabel;
        Label2: TLabel;
        Edit2: TEdit;
        BitBtn1: TBitBtn;
        BitBtn2: TBitBtn;
        ComboBox1: TRxLookupEdit;
        Image1: TImage;
        procedure BitBtn1Click(Sender: TObject);
        procedure BitBtn2Click(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure FormCreate(Sender: TObject);
        procedure ComboBox1KeyDown(Sender: TObject; var Key: Word;
          Shift: TShiftState);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      fmLogin: TfmLogin;implementationuses Main, DMBBQ_ZNJCS;{$R *.DFM}procedure TfmLogin.BitBtn1Click(Sender: TObject);
    Var
       SQLString:String;
    begin
       if ComboBox1.Text='' then
          begin
             Application.MessageBox('您没有选择登录操作员,请重选!','错误',MB_OK OR MB_ICONEXCLAMATION);
             ComboBox1.SelectAll;
             exit;
          end;
       Try
          if (ComboBox1.Text='BBQ_ZNJCS') AND (Edit2.Text='BBQ_ZNJCS') then
             Begin
                fmMain.CurrentOperatorCode:='BBQ_ZNJCS';
                fmMain.CurrentOperatorCode:=ComboBox1.LookupValue;
                fmMain.StatusBar.Panels[0].Text:='系统处于就绪状态...';
                fmMain.StatusBar.Panels[2].Text:=ComboBox1.Text;
                fmMain.StatusBar.Panels[3].Text:=DateToStr(Date);
                ModalResult := mrOK;
                Exit;
             end;
          DMStoreManage.Query1.Close;
          DMStoreManage.Query1.SQL.Clear;
          SQLString:='SELECT * FROM TOPERATOR WHERE OPERATORCODE=:OPERATORCODE AND OPERATORNAME=:OPERATORNAME';
          If Edit2.Text<>'' Then
             SQLString:=SQLString+' AND OPERATORPWD='''+Edit2.Text+''''
          Else
             SQLString:=SQLString+' AND OPERATORPWD IS NULL';
          DMStoreManage.Query1.SQL.Add(SQLString);
          DMStoreManage.Query1.ParamByName('OPERATORCODE').AsString:=ComboBox1.LookupValue;
          DMStoreManage.Query1.ParamByName('OPERATORNAME').AsString:=ComboBox1.Text;
          DMStoreManage.Query1.Open;
          If DMStoreManage.Query1.RecordCount>0 then
             Begin
                DMStoreManage.Query1.First;
                fmMain.CurrentOperatorCode:=ComboBox1.LookupValue;
                fmMain.StatusBar.Panels[0].Text:='系统处于就绪状态...';
                fmMain.StatusBar.Panels[2].Text:=ComboBox1.Text;
                fmMain.StatusBar.Panels[4].Text:=DateToStr(Date);
                ModalResult := mrOK;
             end
          Else
             Begin
                Application.MessageBox('您输入的用户名或密码错误,请重输!','错误',MB_OK OR MB_ICONEXCLAMATION);
                Edit2.SelectAll;
                Exit;
             end;
       Except
          Application.MessageBox('试图进行安全性检验时出错!','错误',MB_OK OR MB_ICONSTOP);
       end;
    end;procedure TfmLogin.BitBtn2Click(Sender: TObject);
    begin
       if Application.MessageBox('确实要退出本系统吗?','提示',MB_YESNO OR MB_ICONQUESTION)=IDYES then
          Begin
             ModalResult := mrCancel;
             Close;
          end
       else
          Exit;
    end;procedure TfmLogin.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
       Action:=caFree;
    end;procedure TfmLogin.FormCreate(Sender: TObject);
    begin
       try
          DMStoreManage.TOPERATOR.Open;
          Edit2.Clear;
       except
          Application.Messagebox('试图打开数据库中的系统操作员信息表时出错!','错误',MB_OK OR MB_ICONEXCLAMATION);
          Application.Terminate;
       end;end;procedure TfmLogin.ComboBox1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
       if (ActiveControl <> nil) and (Key = VK_RETURN) then
        Begin
           if ssShift in Shift then
           Begin
             if ActiveControl is TMemo then
             begin
                     ;
             end
             else
               ActiveControl := FindNextControl(ActiveControl as TWinControl,False, True,False)
           End
        else
           ActiveControl := FindNextControl(ActiveControl as TWinControl, True, True, False);
        End;
    end;end.
    第二个问题:
    子窗体可以用以下方式创建:
      fmChild:=TfmChild.Create(Application);
      fmChild.Show;
    第三个问题:
      建议你使用Data Module,这样使用数据库操作比较方便。