Fórum Chama Formulário por Função #280880
10/05/2005
0
Gostaria de saber como faço para chamar um formulário através de uma função, ou seja, quero passar o nome do form para essa função para que ela crie e chame meu formulário.
Gostaria de substituir a procedure abaixo por uma função:
procedure TfrmFiltros.ChamaFormulario;
var
r : TRect;
begin
case vForm of
0 : begin //Formulário do Cadastro de Empresas
Windows.GetClientRect(frmMenu.ClientHandle, r);
LockWindowUpdate(frmMenu.Handle);
//Cria o formulário de Empresas
if frmEmpresa = nil then
frmEmpresa := TfrmEmpresa.Create(Application)
else
begin
frmEmpresa.OnCreate(nil);
frmEmpresa.Show;
end;
//Apresenta a janela preenchendo a área disponível
frmEmpresa.Height := r.Bottom - r.Top;
frmEmpresa.Width := r.Right - r.Left;
frmEmpresa.Top := 0;
frmEmpresa.Left := 0;
LockWindowUpdate(0);
//
frmEmpresa.Caption := ´Empresas´ + vNomeFiltro;
end;
1 : begin //Formulário do Cadastro de Centros de Custos
.
.
.
.
Rodrigo Mendes
Curtir tópico
+ 0Posts
10/05/2005
Steve_narancic
procedure CriaForm(sFormCadastro);
var
tela : TFormClass;
xform : TForm;
begin
tela := TFormClass(FindClass(sFormCadastro));
Application.CreateForm(tela, xform);
xform.ShowModal;
xform.Free;
end;
[b:6c47e65289]e no Final da unit do Form a ser criado Coloque[/b:6c47e65289]
initialization
RegisterClass(TCad_Cidade);//Onde TCad_Cidade -> Form a ser criado
finalization
UnRegisterClass(TCad_Cidade);
Chame assim:
CriaForm(TCad_Cidade)
Gostei + 0
10/05/2005
Rodrigo Mendes
Os meus formularios são MDIChid, neste caso como faço para testar se eles já estão criados ou não dentro do seu exemplo?
exemplo:
if frmCadCli = nil then
cria form....
else
mostra form....
Gostei + 0
10/05/2005
Steve_narancic
Gostei + 0
24/05/2005
Saint
procedure TfrmPrincipal.CriaForm(objeto:TComponentClass; var Reference);
begin
application.createform(objeto,reference)
end;
vc usa assim.. CriaForm(TNomeForm,NomeForm);
Abraços..
Gostei + 0
24/05/2005
Marco Salles
procedure TfrmFiltros.ChamaFormulario (TFormulario:TcomponentClass; var formulario); begin if TForm(Formulario) = Nil Then application.CreateForm(Tformulario,Formulario); Tform(Formulario).show; *****bla.. bla.. //exemplo::: Tform(Formulario).caption:=´ola´; end;
:arrow: Pra chamar
TfrmFiltros.ChamaFormulario(TNomeDoFormulario,Nomedoformulario);
Gostei + 0
24/05/2005
Adsilver
var Found, i: Integer;
begin
Screen.Cursor := crHourGlass;
FrmPrincipal.StbPadrao.Panels[0].Text := ´Abrindo formulário...´;
FrmPrincipal.Update;
Found := -1;
for i := 0 to Screen.FormCount - 1 do
if Screen.Forms[i] is Form then
Found := i;
if Found >= 0 then begin
Result := Screen.Forms[Found];
Screen.Forms[Found].Show;
if Screen.Forms[Found].Visible then
Screen.Forms[Found].SetFocus;
SetForegroundWindow(Screen.Forms[Found].Handle);
ShowWindow(Screen.Forms[Found].Handle, SW_RESTORE);
end else begin
Result := Form.Create(Nil);
Result.FormStyle := fsMDIChild;
end;
Screen.Cursor := crDefault;
FrmPrincipal.StbPadrao.Panels[0].Text := ´Pronto´;
end;
//
Para chamar:
FrmCadTurno := ExibeForm(TFrmCadTurno) as TFrmCadTurno;
FrmCadTurno.NomeTabela := ´TURNO´;
//
Essa função procura um Form child. Case encontre-o, traz para frente. Se nao encontra cria e exibe.
Gostei + 0
14/09/2005
Porty
Mas voce passou o objecto (TFrmCadTurno) as TFrmCadTurno, eu queria passar em string ou seja ´FrmCadTurno´.
Pois estou a montar o menu dinamicamente indo lendo na base dados qual e o nome do menu a chamar.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)