Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Chamar Form


robinhocne

Pergunta

Pessoal, acho que estou ficando enferrujado...em delphi...

estou tentando fazer o seguinte...

todas as minhas telas tem nome....uma é PESCAD001 - Cadastro de Pessoas

e ai eu to fazendo um atalho...chamar pelo nome...atraves de uma informaçao no TEdit....

tipo o meu TxtAta.text (TEdit) eu digito o nome ( PESCAD001 ) e ai chamar a tela....

alguém poderia me ajudar ??

Editado por robinhocne
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
e ai eu to fazendo um atalho...chamar pelo nome...atraves de uma informaçao no TEdit....

Veja este exemplo

http://www.mail-archive.com/delphi-br@yaho...r/msg39418.html

abraço

então...estou tentando aqui, mas não consegui.....fiz o procedimento...

procedure TFrmPrincipal.AtalhoForm(NomeForm: TFormClass);
begin

     Try
       TForm (NomeForm) := NomeForm.Create(self);
       TForm (NomeForm).ShowModal;
     Finally
       FreeAndNil(NomeForm);
     End;

end;
mas ai vou chamar no botao....
procedure TFrmPrincipal.SpbAtaClick(Sender: TObject);
begin

  AtalhoForm(TxtAta.Text);

end;

mas ai não dá, por causa que estou passando como string.....como eu vou fazer para ele ler o nome da minha janela de um Tedit ?

Link para o comentário
Compartilhar em outros sites

  • 0
mas ai não dá, por causa que estou passando como string.....como eu vou fazer para ele ler o nome da minha janela de um Tedit ?
Para criar formulários a partir de um nome ( variavel ) , é necessário que este nome

seja o nome da classe de formulário a ser instanciada. Além disso, a unit da classe de formulário a ser instanciada precisa se registrar no mecanismo de stream da VCL para que esta possa ser encontrada pela função FindClass().

Um exemplo pratico para voce poder entender:

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    Procedure CriaForm (NomeForm: TFormClass);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  fForm : TFormClass;
  
implementation

{$R *.DFM}

uses unit2, unit3, unit4;

procedure TForm1.FormCreate(Sender: TObject);
begin
  RegisterClass(TForm2);
  RegisterClass(TForm3);
  RegisterClass(TForm4);
end;

Procedure TForm1.CriaForm (NomeForm: TFormClass);
Begin
  Try
     TForm (NomeForm) := NomeForm.Create(self);
     TForm (NomeForm).ShowModal;
  Finally
     FreeAndNil(NomeForm);
  End;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   fForm := TFormClass(FindClass(Edit1.Text));
   CriaForm(fForm);
end;

end.

OBS: Veja ... no Edit voce vai digitar o nome da classe de formulário a ser instanciada

Então para chamar o Form2 ou outro nome que voce tenha dado, voce vai digitar no Edit1 a classe do formlario

Exe: TForm2 ou TForm3 ou TForm4 .. etc

a variavel fForm irá atribuir o nome da classe do form digitado no edit1 .... uma vez que a classe do seu form está registrada então o form será criado e mostrado na tela.

Caso ainda não tenha entendido esse exemplo ... veja outros

http://delphi.about.com/library/weekly/aa080905a.htm

http://www.devmedia.com.br/forum/viewtopic.asp?id=12315

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
mas ai não dá, por causa que estou passando como string.....como eu vou fazer para ele ler o nome da minha janela de um Tedit ?
Para criar formulários a partir de um nome ( variavel ) , é necessário que este nome

seja o nome da classe de formulário a ser instanciada. Além disso, a unit da classe de formulário a ser instanciada precisa se registrar no mecanismo de stream da VCL para que esta possa ser encontrada pela função FindClass().

Um exemplo pratico para voce poder entender:

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    Procedure CriaForm (NomeForm: TFormClass);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  fForm : TFormClass;
  
implementation

{$R *.DFM}

uses unit2, unit3, unit4;

procedure TForm1.FormCreate(Sender: TObject);
begin
  RegisterClass(TForm2);
  RegisterClass(TForm3);
  RegisterClass(TForm4);
end;

Procedure TForm1.CriaForm (NomeForm: TFormClass);
Begin
  Try
     TForm (NomeForm) := NomeForm.Create(self);
     TForm (NomeForm).ShowModal;
  Finally
     FreeAndNil(NomeForm);
  End;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   fForm := TFormClass(FindClass(Edit1.Text));
   CriaForm(fForm);
end;

end.

OBS: Veja ... no Edit voce vai digitar o nome da classe de formulário a ser instanciada

Então para chamar o Form2 ou outro nome que voce tenha dado, voce vai digitar no Edit1 a classe do formlario

Exe: TForm2 ou TForm3 ou TForm4 .. etc

a variavel fForm irá atribuir o nome da classe do form digitado no edit1 .... uma vez que a classe do seu form está registrada então o form será criado e mostrado na tela.

Caso ainda não tenha entendido esse exemplo ... veja outros

http://delphi.about.com/library/weekly/aa080905a.htm

http://www.devmedia.com.br/forum/viewtopic.asp?id=12315

abraço

opa...isso mesmo....obrigado pela a ajuda Jhonas.....

só o que eu não estava sabendo...como tratar o TEdit.text

valeu....

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...