como abrir um form dentro de outro form
Bem, estou com um problema. Tenho uma tela de login e uma tela principal...
O login sendo válido o usuário passa para a tela principal chamada frmmenu...nela será feito cadastros, consultas e relatórios..
O que eu gostaria de fazer na verdade era abrir dentro do frmmenu todas as demais telas..eu uso um panel no frmmenu.
Tipo, sei que tem a questão do MDI e tal..só que o form de login não é a tela principal e precisa ser aberta antes do frmmenu onde serão
abertos os demais forms. Tem outras maneiras, abrir só um showmodal e pronto, mas é um trabalho de TCC e tem que ficar bom..
Uso delphi 7 e mysql com banco de dados...
Testei algumas formas encontrados em tópicos mas não consegui fazer...
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.
obrigado a todos pela ajuda.
O login sendo válido o usuário passa para a tela principal chamada frmmenu...nela será feito cadastros, consultas e relatórios..
O que eu gostaria de fazer na verdade era abrir dentro do frmmenu todas as demais telas..eu uso um panel no frmmenu.
Tipo, sei que tem a questão do MDI e tal..só que o form de login não é a tela principal e precisa ser aberta antes do frmmenu onde serão
abertos os demais forms. Tem outras maneiras, abrir só um showmodal e pronto, mas é um trabalho de TCC e tem que ficar bom..
Uso delphi 7 e mysql com banco de dados...
Testei algumas formas encontrados em tópicos mas não consegui fazer...
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.
obrigado a todos pela ajuda.
Mauricio Nicoli
Curtidas 0
Respostas
Bruno Leandro
11/08/2012
nao entendi bem o seu pedido
mas voce quer chamar um formulario em algum momento, se for isso voce pode usar assim
var
Form: TForm;
begin
Form := TForm.Create( nil );
Form.ShowModal;
FreeAndNil( Form );
end;
mas voce quer chamar um formulario em algum momento, se for isso voce pode usar assim
var
Form: TForm;
begin
Form := TForm.Create( nil );
Form.ShowModal;
FreeAndNil( Form );
end;
GOSTEI 0
Deivison Melo
11/08/2012
Você está desenvolvendo utilizando formulários MDI? Caso não, MDI não te atende?
GOSTEI 0