Fórum como liberar um form da memória depois de executado.. #421687

15/08/2012

0

Olá pessoal, desde já agradeço a todos que puderem ou tentarem me ajudar..

Uso delphi 7

Tenho um form login o qual chamo frmprincipal ok

O sistema não está pronto ainda mas está rodando sem erros até aqui..

A questão é que quando, no form login, o código de verificação é valido
o sistema abre outro form, o qual chamo formmenu. Quando eu clico em
sair no frmmenu o frmlogin ainda está lá em execução. Sei que preciso usar
os comandos try e finally, só que não sei onde colocar isso aqui. Ou se os amigos souberem outra forma também agradeço. Segue a unit do formlogin..


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ExtCtrls, StdCtrls;

type
Tfrmprincipal = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
btnconfirmar: TButton;
btnsair: TButton;
procedure btnconfirmarClick(Sender: TObject);
procedure btnsairClick(Sender: TObject);
private
{ Private declarations }

public
{ Public declarations }
end;

var
frmprincipal: Tfrmprincipal;

implementation

uses Unit3, Unit2;

{$R *.dfm}

procedure Tfrmprincipal.btnconfirmarClick(Sender: TObject);
begin
if (edit1.Text = ) then //Verifica se o campo "Usuário" foi preenchido

begin

Messagedlg(O campo "Usuário" deve ser preenchido!, mtInformation, [mbOk], 0);

if edit1.CanFocus then

edit1.SetFocus;

Exit;

end;

if (edit2.Text = ) then //Verifica se o campo "Senha" foi preenchido

begin

Messagedlg(O campo "Senha" deve ser preenchido!, mtInformation, [mbOk], 0);

if edit2.CanFocus then

edit2.SetFocus;

Exit;

end
else
begin
with DM.ADOQuery do
begin
Active:=False;
SQL.Clear;
SQL.Add(Select * from administrador where usuario =:log and senha =:snh);
Parameters.ParamByName(log).Value:=edit1.Text;
Parameters.ParamByName(snh).Value:=edit2.Text;
Active:=True;
//================================================
if RecordCount > 0 then
frmmenu.ShowModal
else
ShowMessage(Login ou Senha incorretos, verifique!);
end;
end;
end;

procedure Tfrmprincipal.btnsairClick(Sender: TObject);
begin
close;
end;

end.
Mauricio Nicoli

Mauricio Nicoli

Responder

Posts

16/08/2012

Marco Salles

Uma outra forma mauricionicoli esta ligado oc conceito

Do jeito que vc esta fazendo vc primeiro cria o form login o qual chamo
frmprincipal ok e logo em seguida vc quer liberar o form login .

Outro modo é Criar o frmprincipal principal primeiro e no seu evento Onshow
(antes dele ser mostrado para o usuário) criar o form login

Ollhe este código

procedure Tfrmprincipal.FormShow(Sender: TObject);
begin
login:=Tlogin.Create(nil);
try
login.ShowModal;
if not (login.ModalResult = mrOk) then
PostMessage(Handle, WM_Close, 0, 0);
{Seus codigos Normais}
finally
  freeandnil(login);
end;
end;


Agora no Form Login vc faz o seguinte

se a senha e o usuário estiver corretos , vc coloca a instrução

ModalResult:=mrOk

esta instrução fechará o formLogin e avisará ao formPrincipla que esta
tudo bem.

por outro lado sempre que vc quiser fechar o form Login pela senha esta
errada vc utiliza os outros valores possiveis do ModalResul


boa sorte

Responder

Gostei + 0

21/08/2012

Mauricio Nicoli

uma outra forma mauricionicoli esta ligado oc conceito

do jeito que vc esta fazendo vc primeiro cria o form login o qual chamo
frmprincipal ok e logo em seguida vc quer liberar o form login .

outro modo é criar o frmprincipal principal primeiro e no seu evento onshow
(antes dele ser mostrado para o usuário) criar o form login

ollhe este código

procedure tfrmprincipal.formshow(sender: tobject);
begin
login:=tlogin.create(nil);
try
login.showmodal;
if not (login.modalresult = mrok) then
postmessage(handle, wm_close, 0, 0);
{seus codigos normais}
finally
freeandnil(login);
end;
end;

agora no form login vc faz o seguinte

se a senha e o usuário estiver corretos , vc coloca a instrução

modalresult:=mrok

esta instrução fechará o formlogin e avisará ao formprincipla que esta
tudo bem.

por outro lado sempre que vc quiser fechar o form login pela senha esta
errada vc utiliza os outros valores possiveis do modalresul


boa sorte


obrigado pela ajuda.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar