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.
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
Curtir tópico
+ 0
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
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
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
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
Clique aqui para fazer login e interagir na Comunidade :)