天天看点

CSDN 寻找最后一个Delphi犀利哥

百度知道真垃圾,那么大的一个企业,就给那么点空间,提个问1500字限制了。想想来csdn,挂了一个星期都没人理,不知道是我分太少,还是真的高手都不来这里???期待一个英雄的到来,菜鸟我在这里拜谢了!!其实这根本不是生命难题,我才刚刚学,问不出生命高深的题目来:

rT;

delphi7 ,DB:oracle

问题运行工程文件exe不报错,出现了登入界面却,无法进入基本界面,调出任务管理器看不到EXE的进程,生命这个系统已经退出了。

主界面的代码:login.pass  ,name 属性frmLogin

unit main;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, Buttons, StdCtrls;

type

  TfrmMain = class(TForm)

    SpeedButton2: TSpeedButton;

    SpeedButton3: TSpeedButton;

    SpeedButton4: TSpeedButton;

    SpeedButton5: TSpeedButton;

    SpeedButton6: TSpeedButton;

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

    procedure SpeedButton2Click(Sender: TObject);

    procedure SpeedButton3Click(Sender: TObject);

    procedure SpeedButton4Click(Sender: TObject);

    procedure SpeedButton5Click(Sender: TObject);

    procedure SpeedButton6Click(Sender: TObject);

    procedure BitBtn1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  frmMain: TfrmMain;

implementation

uses GoodsInfo, Vendor, InHouse, OutHouse, Stocks, AlterPWD;

{$R *.dfm}

procedure TfrmMain.SpeedButton2Click(Sender: TObject);

begin

  frmGoodsinfo:=TfrmGoodsinfo.Create(self);

  frmGoodsinfo.Showmodal;

  frmGoodsinfo.Free;

end;

procedure TfrmMain.SpeedButton3Click(Sender: TObject);

begin

   frmVendor:=TfrmVendor.Create(self);

   frmVendor.Showmodal;

   frmVendor.Free;

end;

procedure TfrmMain.SpeedButton4Click(Sender: TObject);

begin

  frmInHouse:=TfrmInHouse.Create(self);

  frmInHouse.Showmodal;

  frmInhouse.Free;

end;

procedure TfrmMain.SpeedButton5Click(Sender: TObject);

begin

 frmOutHouse:=TfrmOutHouse.Create(self);

  frmOutHouse.Showmodal;

  frmOutHouse.Free;

end;

procedure TfrmMain.SpeedButton6Click(Sender: TObject);

begin

  frmStocks:=TfrmStocks.Create(self);

  frmStocks.Showmodal;

  frmStocks.Free;

end;

procedure TfrmMain.BitBtn1Click(Sender: TObject);

begin

frmalterpwd:=Tfrmalterpwd.Create(self);

  frmalterpwd.Showmodal;

  frmalterpwd.Free;

end;

end.

登入界面

unit Login;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, Buttons, DB, ADODB;

type

  TfrmLogin = class(TForm)

    edtUserID: TEdit;

    edtPassword: TEdit;

    bbtYes: TBitBtn;

    bbtNo: TBitBtn;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    procedure bbtYesClick(Sender: TObject);

    procedure bbtNoClick(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  frmLogin: TfrmLogin;

  //  提供外界访问该表单的接口函数

  //  sAdminNo:用于接受登录用户输入的账号传递给调用者

  //  nStatus:当为0时表示是第一次登录,单击取消按钮退出整个程序

  //  当为1时表示是重新登录,单击取消按钮仅退出本程序

  function gfunOpenLogin(var usAdminNo:string ; nStatus:integer):integer;

implementation

  uses DataModual,main;

var

 sAdminNo: string;          // 接收管理员账号

 unStatus: integer;         // 与nStatus含义一样

 unTimes: integer;          // 计算用户登录次数

{$R *.dfm}

 //登录表单提供出来的接口函数

function gfunOpenLogin(var usAdminNo:string ; nStatus:integer):integer;

begin

  frmLogin := TfrmLogin.Create(nil);      // 动态创建登录表单对象

  unStatus := nStatus;                    //  将调用者参数送人unStatus变量中

  unTimes := 1;                            //  初始登录次数设置为1

  frmLogin.ShowModal;                      //  显示登录界面

  usAdminNo := sAdminNo;                   //   将登录界面的管理员账号返回给调用者

  result := 0;                             //   函数返回0值

  frmLogin.Free;                           //  释放登录表单对象

end;

procedure TfrmLogin.bbtYesClick(Sender: TObject);

var

   sConn : string;

  sAdminPwd : string;

begin

  sAdminNo := trim(edtUserID.text);

  sAdminPwd := trim(edtPassword.text);

  if sAdminNo = '' then                                //没有输入管理员账号

    begin

      application.MessageBox('没有输入管理员账号','提示',mb_ok);

      edtUserID.setFocus;

      exit;

    end;

    sConn := 'Provider=OraOLEDB.Oracle.1;Password='+sAdminPwd+';Persist Security Info=True;User ID='+sAdminNo+';Data Source=connb01';

    if  DataModule1.ADOConnection1.connected then

        DataModule1.ADOConnection1.close;

        DataModule1.ADOConnection1.ConnectionString := sConn;

        DataModule1.ADOConnection1.loginprompt := False;

  try

       DataModule1.ADOConnection1.open;

       close;                           //关闭登陆界面

       main.frmMain.Show; //显示仓库管理系统界面

    except

    application.MessageBox('输入账号或密码有误,请重新登陆','提示',mb_ok);

    unTimes := unTimes+1;

    if unTimes > 3 then

    begin

      application.MessageBox('你已经试图登录三次不成功,退出系统','提示',mb_ok);

      application.Terminate;

    end

    else

      edtUserID.setFocus;

  end;

end;

procedure TfrmLogin.bbtNoClick(Sender: TObject);

begin

if unStatus = 0 then                //初次取消退出整个应用程序

  begin

    if DataModule1.ADOConnection1.Connected then

       DataModule1.ADOConnection1.Close;

       application.Terminate;

  end

  else                               //重新登录后取消本次登录

    close;

end;

end.

继续阅读