Login窗口不能调用主窗口的控件,要用自己的控件。


 

procedure TUniLoginForm1.UniLoginFormCreate(Sender: TObject);
begin//数据库连接
FDQuery2.Connection := FDConnection2;
FDConnection2.LoginPrompt:=false; //取消登录提示框
FDConnection2.Open('DriverID=SQLite;Database=test1.Sqlite3.db');
end;

procedure TUniLoginForm1.UniButton1Click(Sender: TObject);
begin//登录  查询 判断
  FDQuery2.Open(' select aid from aTable  where UserName= ''' +
    UniEdit1.Text + '''  and UserPassword=  ''' // 用户名
    + UniEdit2.Text // 密码
    + ''';');
  if FDQuery2.RecordCount = 0 then  begin
    ShowMessage('Incorrect Username or Password!') ;
    exit
  end;

在UniGUI的CHM帮助里读到的。

一定要新建一个其他空白的工程,然后再添加LoginForm


LoginForm 是另一种特殊的表单类型, 仅用于登录目的。

  

 

 此操作将创建一个与常规窗体外观相同的空白 LoginForm:


 

 LoginForm 是一个名为 TUniLoginForm 的内置类的后代.每个应用程序只能有一个 LoginForm。 添加 LoginForm 后, 应用程序将在新会话开始时显示此窗体。 您需要添加控件、事件处理程序和所需的所有内容, 以实现所需的功能。 登录行为是使用窗体的 ModalResult 控制的。 如果 LoginForm 返回mrOK,则表示成功登录, 将创建并激活新 MainForm。 当 ModalResult 返回 mrCancel 时, 它将终止会话。 如果我们使用只有两个按钮的表单 (一个用于成功登录, 另一个用于失败), 下面的代码将执行以下操作:

procedure TUniLoginForm1.UniButton1Click(Sender: TObject);
begin
  ModalResult := mrOK;  // Login is valid so proceed to MainForm
end;
 
procedure TUniLoginForm1.UniButton2Click(Sender: TObject);
begin
  ModalResult := mrCancel; // Invalid Login exit from app
end;

一旦用户登录并显示 MainForm, 就有两种方法可以终止会话。 您可以终止会话并返回到 LoginForm, 将mrOK作为 ModalResult 返回, 或通过返回mrCancel终止会话。 出于安全原因, 现有会话总是在显示 LoginForm 之前终止, 即每个新登录都启动一个新会话。


保存登录信息七天。

  if sameText(UniEdit1.Text, 'demo1') and sameText(UniEdit1.Text, 'demo1') then
  begin
    UniMainModule.LoggedUser := UniEdit1.Text;
    if UniCheckBox1.Checked then
    begin
      UniApplication.Cookies.SetCookie('_loginname', UniEdit1.Text, Date + 7.0); // Expires 7 days from now
      UniApplication.Cookies.SetCookie('_pwd', UniEdit2.Text, Date + 7.0);
    end;

    ModalResult := mrOK;
  end;

 登录背景图片设置 :