robinhocne Postado Dezembro 8, 2009 Denunciar Share Postado Dezembro 8, 2009 (editado) Pessoal, acho que estou ficando enferrujado...em delphi...estou tentando fazer o seguinte...todas as minhas telas tem nome....uma é PESCAD001 - Cadastro de Pessoase 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 Dezembro 10, 2009 por robinhocne Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Dezembro 8, 2009 Denunciar Share Postado Dezembro 8, 2009 e ai eu to fazendo um atalho...chamar pelo nome...atraves de uma informaçao no TEdit....Veja este exemplohttp://www.mail-archive.com/delphi-br@yaho...r/msg39418.htmlabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 robinhocne Postado Dezembro 9, 2009 Autor Denunciar Share Postado Dezembro 9, 2009 e ai eu to fazendo um atalho...chamar pelo nome...atraves de uma informaçao no TEdit....Veja este exemplohttp://www.mail-archive.com/delphi-br@yaho...r/msg39418.htmlabraçoentã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 ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Dezembro 9, 2009 Denunciar Share Postado Dezembro 9, 2009 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 instanciadaEntã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 .. etca 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 outroshttp://delphi.about.com/library/weekly/aa080905a.htmhttp://www.devmedia.com.br/forum/viewtopic.asp?id=12315abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 robinhocne Postado Dezembro 10, 2009 Autor Denunciar Share Postado Dezembro 10, 2009 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 instanciadaEntã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 .. etca 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 outroshttp://delphi.about.com/library/weekly/aa080905a.htmhttp://www.devmedia.com.br/forum/viewtopic.asp?id=12315abraçoopa...isso mesmo....obrigado pela a ajuda Jhonas.....só o que eu não estava sabendo...como tratar o TEdit.textvaleu.... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
robinhocne
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 robinhocneLink para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
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.