DICAS

Visite a biblioteca de dicas da comunidade.

Saiba mais

ARTIGOS

Abordagens detalhadas sobre assuntos diversos.

Saiba mais

INICIANTES

Aprenda a programar de um modo simples e fácil.

Saiba mais

DOWNLOADS

Acesse os materiais exclusivos aos membros.

Saiba mais
voltar

Erro ao validar login

Visualizando 14 posts - 1 até 14 (de 14 do total)
  • Autor
    Posts
  • #1190
    #1192

    Sim, é possível criar um formulário personalizado para login.

    Por exemplo, crei um novo form, coloque campos para informar o usuário e senha. Coloque um botão validar e crie uma propriedade do Tipo User Control.
    Ex: property UserControl: TUserControl.

    No clique do botão validar você pode fazer assim:

    if UserControl.VerificaLogin(EdtLogin.Text, EdtSenha.Text) = 0 then
    begin
        // login ok
    end
    else
    begin
        // erro login
    end;
    

    E por fim, para o componente saber que precisar usar o seu formulário, faça o seguinte: No evento OnCustomLoginForm do userControl informe a ele o seu form.

    Veja este exemplo:

    
    procedure TFrmPrincipal.UserControl1CustomLoginForm(Sender: TObject;
      var CustomForm: TCustomForm);
    begin
      CustomForm := TfrmLogin.Create(Application);
      TfrmLogin(CustomForm).UserControl := Self.UserControlMain;
    end;
    
    • Esta resposta foi modificada 8 anos, 5 meses atrás por InfusTec.
    • Esta resposta foi modificada 8 anos, 5 meses atrás por InfusTec.
    #1346
    Fabio Matte
    Participante

    Como completo meu código aqui

     private
        { Private declarations }
    
      property UserControl: TUserControl;
    
      public
        { Public declarations }
    
      end;

    ele diz que está faltando alguma coisa nessa property e eu nao estou conseguindo fazer, vc tem um exemplo ou pode completar pra mim ter uma ideai.

    #1349
    InfusTec
    Participante

    Você precisa colocar os Gets e Sets.

    Exemplo:

      
      TForm1 = class(TForm)
        UserControl1: TUserControl;
      private
        FUserControl: TUserControl;
      public
        property UserControl: TUserControl read FUserControl write FUserControl;
      end;
    

    Além disso, é necessário estar declarado UCBase na seção uses.

    • Esta resposta foi modificada 8 anos, 5 meses atrás por InfusTec.
    #1355
    Fabio Matte
    Participante

    Funcionou perfeitamente obrigado.

    #1853
    Fabrício Ferreira
    Participante

    Bom dia, usei seu exemplo para tentar implementar a tela de login no meu sistema, porém o delphi não acha “UserControlMain”, estou usando delphi seattle, pode me ajudar?

    #1991
    Anônimo
    Inativo

    Bom dia estou com o mesmo problema do Fabrício não está achando o UserControlMain.

    #2003

    Este “Self.UserControlMain” foi o componente colocado no form TFrmPrincipal,

    no caso na propriedade Name do user control é ‘UserControlMain’.

    É só joga o componente na tela principal e colocar este nome, para ficar o mesmo
    código do exemplo.

    #3160
    Mabreu
    Participante

    No form de Login tem que ter um componente Usercontrol1 também?

    #3161
    Mabreu
    Participante

    Minha Unit de Login tá assim:

    unit U_Login;

    interface

    uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Mask, Vcl.StdCtrls, Vcl.ExtCtrls,
    Vcl.Imaging.pngimage, System.ImageList, Vcl.ImgList, UniProvider,
    SQLServerUniProvider, Data.DB, MemDS, DBAccess, Uni,UCBase, U_DM,
    UCDataConnector, UCFireDACConn, UCSettings;

    type
    TFrm_Login = class(TForm)
    Button1: TButton;
    Button2: TButton;
    LinkLabel1: TLinkLabel;
    Image1: TImage;
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    ValorNome: TEdit;
    ValorSenha: TEdit;
    ImageList1: TImageList;
    DataSource1: TDataSource;
    SQLServerUniProvider1: TSQLServerUniProvider;
    UniQuery1: TUniQuery;
    UserControl1: TUserControl;
    UCSettings1: TUCSettings;
    UCControls1: TUCControls;
    UCFireDACConn1: TUCFireDACConn;
    procedure Button2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure ValorSenhaExit(Sender: TObject);
    procedure UserControl1CustomLoginForm(Sender: TObject;
    var CustomForm: TCustomForm);

    private
    FUserControl: TUserControl;
    procedure SetUserControl(const Value: TUserControl);

    public
    fecha: Boolean;
    property UserControl: TUserControl read FUserControl write SetUserControl;
    Function GetStateK (Key: integer): boolean;
    end;

    var
    Frm_Login: TFrm_Login;

    implementation

    {$R *.dfm}

    procedure TFrm_Login.Button1Click(Sender: TObject);
    begin
    if FUserControl.VerificaLogin(ValorNome.Text, ValorSenha.Text) = 0 then
    begin
    ShowMessage(‘Logado’);
    end
    else
    begin
    // erro login
    end;
    end;

    procedure TFrm_Login.Button2Click(Sender: TObject);
    begin
    Application.Terminate;
    end;

    procedure TFrm_Login.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    If Not fecha Then
    Action := caNone
    Else
    Action := caFree;
    end;

    procedure TFrm_Login.FormKeyDown(Sender: TObject; var Key: Word;
    Shift: TShiftState);
    begin
    If GetStateK (VK_LMENU) And (Key = VK_F4) Then
    fecha := False;
    end;

    procedure TFrm_Login.FormShow(Sender: TObject);
    begin
    ValorNome.SetFocus;
    end;

    function TFrm_Login.GetStateK(Key: integer): boolean;
    begin
    Result := Odd (GetKeyState (Key));
    end;

    procedure TFrm_Login.SetUserControl(const Value: TUserControl);
    begin
    FUserControl := Value;
    end;

    procedure TFrm_Login.UserControl1CustomLoginForm(Sender: TObject;
    var CustomForm: TCustomForm);
    begin
    CustomForm := TFrm_Login.Create(Application);
    TFrm_Login(CustomForm).UserControl := Self.UserControlMain;
    end;

    procedure TFrm_Login.ValorSenhaExit(Sender: TObject);
    begin
    Button1.setfocus;
    end;

    end.

    E a de Principal:

    unit Unit1;

    interface

    uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
    FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Error, FireDAC.UI.Intf,
    FireDAC.Phys.Intf, FireDAC.Stan.Def, FireDAC.Stan.Pool, FireDAC.Stan.Async,
    FireDAC.Phys, FireDAC.VCLUI.Wait, Data.DB, FireDAC.Comp.Client,
    FireDAC.Stan.Param, FireDAC.DatS, FireDAC.DApt.Intf, FireDAC.DApt,
    dxGDIPlusClasses, Vcl.ExtCtrls, Vcl.ComCtrls, Vcl.Menus, FireDAC.Comp.DataSet,
    FireDAC.Comp.UI, FireDAC.Phys.MySQL, FireDAC.Phys.MySQLDef, UCSettings, UCBase,
    UCDataConnector, UCFireDACConn, U_DM, U_Login;

    type
    TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    Cadastros1: TMenuItem;
    Pesquisas1: TMenuItem;
    Relatrios1: TMenuItem;
    Configuraes1: TMenuItem;
    Ajuda1: TMenuItem;
    Sair1: TMenuItem;
    Usurios1: TMenuItem;
    CriarConta1: TMenuItem;
    AlterarSenha1: TMenuItem;
    LogOff1: TMenuItem;
    BancodeDados1: TMenuItem;
    StatusBar1: TStatusBar;
    Image1: TImage;
    UserControlMain: TUserControl;
    UCFireDACConn1: TUCFireDACConn;

    private
    FUserControl: TUserControl;
    procedure SetUserControl(const Value: TUserControl);
    property UserControl: TUserControl read FUserControl write SetUserControl;

    public

    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}

    { TForm1 }

    procedure TForm1.SetUserControl(const Value: TUserControl);
    begin
    FUserControl := Value;
    end;

    #3864
    Alexandre Almeida
    Participante

    Boa noite
    Como implemento os Gets e Sets?

    #3865
    Alexandre Almeida
    Participante

    Olá pessoal alguém pode me ajudar fazendo favor.
    Como implemento os Gets e Sets?

    #3866

    Oi Alexandre, se estiver montando a tela de login personalizada, precisa colocar no seu uma propriedade assim:

    property UserControl: TUserControl read FUserControl write SetUserControl;

    E user o Ctrl + Shfit + C que o Delphi monta o Set automaticamente para você.

    Como não tem nenhum evento específico, o get que no caso é a leitura da variável não precisa ser feito.

    Parecido com o exemplo acima do @Mabreu.

    #5014
    mariodosreis
    Participante

    Peço desculpa pela insistência e obviamente que este não será o lugar
    mais indicado para esta questão, digo eu! Porém à falta de melhor..
    Verifico que o pessoal está usando versões avançadas do Delphi …
    só que ainda vou no XE7 e dá para fazer tudo o que necessito, pelo menos até hoje.
    A questão que a últma versão do UC Swdelphi não compila e na que tenho 2.2o Firedac tem problemas não vê u UC e vice versa se não estiver no mesmo form?
    Como faço alguém me ajuda a compila-lo para XE7? Obrigado

Visualizando 14 posts - 1 até 14 (de 14 do total)
  • Você deve fazer login para responder a este tópico.

Ir ao topo
© 2024 Infus Soluções em Tecnologia - Todos os Direitos Reservados