Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
wagner_teixeira Novato

Registrado: Sábado, 2 de Julho de 2011 Mensagens: 44
|
Enviada: Seg Jul 30, 2012 6:41 pm Assunto: Criar Form Passando Tipo Como string [RESOLVIDO] |
|
|
Boa Tarde Pessoal,
segue uma pergunta um tanto meio estranha...mas é isso ai mesmo....preciso criar criar um form, mas tenho seu tipo como string, vou explicar melhor.
Estou trabalhando num projeto onde tinha inumeras abas sobrepostas, estamos tirando essas abas e a ideia é colocar um treeview. Criei uma tabela no banco, onde eu tenho os forms e os indices dos forms, por exemplo, o form que fica em Fiscal \ Saidas, seria 5.2...se o usuario clicar no item saidas eu consigo montar a partir do treeview a hierarquia, "5.2", dar um select no banco, pegar o nome do form e criar...seria algo mais ou menos assim....ja tentei algo parecido com isso:
Código: |
procedure TM.Button1Click(Sender: TObject);
Var Form:TForm;
begin
AbreForm(GetClass('TFormPessoal'),Form);
end;
procedure TM.AbreForm(aClasseForm: TComponentClass; aForm: TForm);
begin
Application.CreateForm(aClasseForm, aForm);
try
Aform.Parent := PanelConteudo;
aForm.Show;
finally
end;
end;
|
se alguem tiver alguma ideia e puder me ajudar nisso...serei grato
Editado pela última vez por wagner_teixeira em Qua Nov 14, 2012 8:01 am, num total de 1 vez |
|
Voltar ao Topo |
|
 |
marcosalles Moderador

Registrado: Quarta-Feira, 26 de Março de 2008 Mensagens: 1695 Localização: Muriaé Mg
|
|
Voltar ao Topo |
|
 |
wagner_teixeira Novato

Registrado: Sábado, 2 de Julho de 2011 Mensagens: 44
|
Enviada: Seg Jul 30, 2012 11:15 pm Assunto: |
|
|
Fiz um teste aqui em casa, e pelo que vi isso vai me atender.....muito obrigado!! |
|
Voltar ao Topo |
|
 |
wagner_teixeira Novato

Registrado: Sábado, 2 de Julho de 2011 Mensagens: 44
|
Enviada: Qua Nov 14, 2012 8:00 am Assunto: |
|
|
só pra finalizar:
na unit do formulario é preciso ter as seguintes instruções:
Código: |
initialization
RegisterClass(TForm1);
finalization
UnRegisterClass(TForm1);
|
variaveis:
Código: |
ClasseForm : TFormClass;
Form : TForm;
|
criar o form
Código: |
ClasseForm := TFormClass(GetClass('TForm1'));
If ClasseForm = nil Then
Begin
ShowMessage('Formulário não Registrado!');
Abort;
End;
Application.CreateForm(ClasseForm, Form);
|
[/code] |
|
Voltar ao Topo |
|
 |
marcosalles Moderador

Registrado: Quarta-Feira, 26 de Março de 2008 Mensagens: 1695 Localização: Muriaé Mg
|
|
Voltar ao Topo |
|
 |
wagner_teixeira Novato

Registrado: Sábado, 2 de Julho de 2011 Mensagens: 44
|
Enviada: Sáb Nov 17, 2012 5:48 pm Assunto: |
|
|
mascossales, do jeito que eu fiz é pior? pode me dar algum problema.... acho que voce esta usando Rtti, mas Rtti só >= delphi 2010.
p.s.: se eu estiver falando alguma bobagem...me desculpe! |
|
Voltar ao Topo |
|
 |
marcosalles Moderador

Registrado: Quarta-Feira, 26 de Março de 2008 Mensagens: 1695 Localização: Muriaé Mg
|
Enviada: Sáb Nov 17, 2012 6:06 pm Assunto: |
|
|
wagner_teixeira escreveu: | mascossales, do jeito que eu fiz é pior? pode me dar algum problema.... acho que voce esta usando Rtti, mas Rtti só >= delphi 2010.
p.s.: se eu estiver falando alguma bobagem...me desculpe! |
Eu não diria que é pior eu diria que vc tb obtem o mesmo efeito . As coisas evoluem . O Rtti evoluiu e como vc mesmo disse , a partir do delpho2010 ficou menos engessado . Se vc não tem acesso as classe poderosas do Delphi vc fez do mesmo modo que eu fazia em versões antigas , com a unica diferença que eu prefiro ainda o uso dos Padrões e tb que o Owner do form seje passado como Nil .. algo do tipo
Código: | if form <> nil then
exit;
ClasseForm := TFormClass(GetClass('TForm4'));
If ClasseForm = nil Then
Begin
ShowMessage('Formulário não Registrado!');
Abort;
End;
// Application.CreateForm(ClasseForm, Form);
Form:= ClasseForm.Create(nil);
try
Form.ShowModal;
finally
freeandNil(form);
end; |
[]sds _________________ http://marcosalles.wordpress.com
Desenvolvo FreeLancer e presto Consultoria
Orientação Online DataSnap DbX ClientDataSet
POO , Padrões de Projeto e dúvidas de Delphi em
Geral |
|
Voltar ao Topo |
|
 |
|