麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

合理應(yīng)用用戶登錄界面,用戶登錄時不必創(chuàng)建其他窗體

2019-11-18 18:14:48
字體:
供稿:網(wǎng)友

/////////////////////  (一)項(xiàng)目文件  test.dPR //////////////////////
program SerialGet;

uses
  Forms,
  UMain in 'UMain.pas' {frmMain},
  ULogin in 'ULogin.pas' {frmLogin},
  UDataModule in 'UDataModule.pas' {DataModule1: TDataModule},

{$R *.res}

begin
  application.Initialize;

  if CreateMutex then                 //創(chuàng)建句柄,判斷此應(yīng)用程序是否在運(yùn)行
  begin
    //調(diào)用全局函數(shù),創(chuàng)建并顯示登陸界面
    if doLogin then                   //登陸成功
    begin
      Application.CreateForm(TfrmMain, frmMain);
      //數(shù)據(jù)模塊文件不須在這兒創(chuàng)建,因?yàn)?ULogin.pas 中已創(chuàng)建
      //Application.CreateForm(TDataModule1, DataModule1);
      Application.Run;
    end else                          //登陸不成功
    begin
      try
        DataModule1.free;
        Application.terminate;
      except
      end;
    end;
  end else
  begin
    DestroyMutex;                     //釋放句柄
  end;
end.

////////////////  (二)登陸窗體 ULogin.pas  ULogin.dfm //////////////////
unit ULogin;

interface
uses ......
type
  ... ... ...
  private
    function checkPsw:integer;
  public
  end;

var
  frmLogin: TfrmLogin;

  function doLogIn:boolean;          // 全項(xiàng)目公用函數(shù)
  function CreateMutex: Boolean;     // 全項(xiàng)目公用函數(shù)
  procedure DestroyMutex;            // 全項(xiàng)目公用函數(shù)

implementation
uses UDataModule;  //引用數(shù)據(jù)模塊
var Mutex: hWnd;

{$R *.dfm}

function doLogIn:boolean;                 //由項(xiàng)目文件調(diào)用此函數(shù)
begin
  with TfrmLogin.create(application) do   //創(chuàng)建并顯示登陸界面
  begin
    //窗體的ShowModal屬性
    if ShowModal = mrok then result := true else result := false;
    free;
  end;
end;

procedure DestroyMutex;
begin
  if Mutex <> 0 then CloseHandle(Mutex);
end;

function CreateMutex: Boolean;
var
  PrevInstHandle: THandle;
  APPTitle: PChar;
begin
  AppTitle := StrAlloc(100);
  StrPCopy(AppTitle, Application.Title);
  Result := True;
  Mutex := Windows.CreateMutex(nil, False, AppTitle);
  if (GetLastError = ERROR_ALREADY_EXISTS) or (Mutex = 0) then begin
    Result := False;
    SetWindowText(Application.Handle, '');
    PrevInstHandle := FindWindow(nil, AppTitle);
    if PrevInstHandle <> 0 then begin
      if IsIconic(PrevInstHandle) then
        ShowWindow(PrevInstHandle, SW_RESTORE)
      else
        BringWindowToTop(PrevInstHandle);
      SetForegroundWindow(PrevInstHandle);
    end;
    if Mutex <> 0 then Mutex := 0;
  end;
  StrDispose(AppTitle);
end;

// -1: 密碼不對  1:數(shù)據(jù)庫不對  2:沒有此用戶  3:合法
function TfrmLogin.checkPsw:integer;
var name,sPsw,SQL,sValue:string;
begin
  Application.CreateForm(TDataModule1, DataModule1);  //此處創(chuàng)建了數(shù)據(jù)模塊
  if not DataModule1.ConnOK then
  begin result := 1;   exit;  end;

  name := lowercase(editName.text);  //文本框
  sPsw := lowercase(editPass.text);  //文本框
  sql := 'select * from maker where name="'+name+'"';
  if openSQL(SQL,DataModule1.dsDataSet) <=0 then
  begin result := 2; exit;  end;

  DataModule1.dsDataSet.First ;
  sValue := lowercase(DataModule1.dsDataSet.fieldbyName('loginPsw').asString);
  if sValue<>sPsw then result := -1 else result := 3;
end;

/////////////////////  (三)數(shù)據(jù)模塊 UDataModule.pas //////////////////////
... ... ... ...
type
  public
    ConnOK:boolean;
  end;
var
  DataModule1: TDataModule1;
  function OpenSQL(s: string;query:TADODataSet):integer;
  function DoSQL(s: string;query:TADOQuery):boolean;
 
implementation

{$R *.dfm}

procedure TDataModule1.DataModuleCreate(Sender: TObject); //連接ADOConnection
var SQL,pwd:string;
begin
  try
    pwd := 'deliSerial';
    SQL := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+
         extractfilepath(paramstr(0))+'SerialInfo.mdb'+
         ';Persist Security Info=False;'  +
         'Jet OLEDB:Database PassWord="'+pwd+'"';
    ADOConnection1.Connected := false;
    ADOConnection1.ConnectionString := SQL;
    ADOConnection1.Connected := true;
    ConnOK:=true;
  except
    ConnOK:=false;
  end;
end;

function OpenSQL(s: string;query:TADODataSet):integer; //查詢SQL
var old_Cursor:TCursor;
begin
  old_Cursor:=screen.cursor;
  screen.cursor:=crSQLWait;
  try
    try
      with query do
      begin
        close; commandtext:=s; open;
        result:=query.recordcount;       //返回結(jié)果集記錄數(shù)
      end;
    except
     result:=0;
    end;
  finally
    screen.cursor:=old_Cursor;
  end;
end;

function DoSQL(s: string;query:TADOQuery):boolean;  //運(yùn)行 SQL
var old_Cursor:TCursor;
begin
  result:=true;
  old_Cursor:=screen.cursor;
  screen.cursor:=crSQLWait;
  try
    try
      with query do
      begin
        close; SQL.Clear; SQL.Add(s); ExecSQL;
      end;
    except
      result:=false;
    end;
  finally
    screen.cursor:=old_Cursor;
  end;
end;


上一篇:ADO帶密碼的數(shù)據(jù)連接、查詢一個記錄集、執(zhí)行一SQL語句

下一篇:選擇一個網(wǎng)路鄰居

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
學(xué)習(xí)交流
熱門圖片

新聞熱點(diǎn)

疑難解答

圖片精選

網(wǎng)友關(guān)注

主站蜘蛛池模板: 久久亚洲精品国产一区 | 久久免费视频一区 | 国产在线精品一区二区夜色 | 国产精品久久久久久久久久iiiii | 久草在线观看首页 | 久久精品国产一区二区电影 | 日本成人一二三区 | 久久成年网 | 精品国产一区二区亚洲人成毛片 | 国内精品伊人久久久久网站 | 正在播放91 | 伊人亚洲精品 | 国产成人在线综合 | 欧美一级做一级爱a做片性 久久久资源网 | 爱操影视 | 欧美一级黄 | 成人国产精品一区二区毛片在线 | h网站在线观看 | av黄色在线免费观看 | 久久老司机 | 国产一级毛片国语版 | 黄色免费播放网站 | 久久久青 | 日韩av电影免费在线观看 | 日韩黄色精品视频 | av日韩一区二区三区 | 毛片在线视频免费观看 | 一本在线高清码电影 | 中文字幕激情 | 国产免费区 | 久久久久久久久91 | 亚洲精品欧美二区三区中文字幕 | 369看片你懂的小视频在线观看 | 成人三级在线播放 | 狠狠久久 | 91精品国产综合久久青草 | 久久精品日产第一区二区三区 | 在线视频 日韩 | 色七七网站 | 999久久久精品 | 黄色网址进入 |