Fórum Criar Formulario. #233857
23/05/2004
0
Preciso criar os formularios da minha aplicação em tempo de execução, só que o nome do formulario esta em uma tabela no meu banco.
O menu da minha aplicação esta sendo criado em função da permissão do usuário que esta logando.
Quando o usuário clicar na opção do menu, eu devo criar o formulário pertencente a opção clicada.
Alguem tem alguma solução?
Grato.
:lol:
Ericfp
Curtir tópico
+ 0Posts
23/05/2004
Carlosmielke
use a funcao FINDCLASS. ela retorna um obejto da classe tpersistentclass.
use desse modo
FINDCLASS(´t´+nome do formulario na tabela);
atenção
para que esta funcao funcione deve-se colocar o seguinte comando na seção INITIALIZATION
registerclass(TFORM1)
crie uma variavel do tipo TForm e use o seguinte comando.
form:=tform(findclass(´t´+nome do formulario na tabela)).create(self)
deve ser assim não lembro bem
espero ter ajudado..
CArlos mielke :)
Gostei + 0
23/05/2004
Carlosmielke
use assim
with TFormClass(FindClass(([b:6d0962c117]´T´+nomeform[/b:6d0962c117])).Create(Self) do
try
ShowModal;
finally
Free;
end;
t+
carlos mielke
Gostei + 0
24/05/2004
Ericfp
Desculpe a minha burrice. Onde fica a INITIALIZATION?
Grato.
Gostei + 0
24/05/2004
Carlosmielke
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedures
.....
....
....
[b:e7e2935bae]initialization[/b:e7e2935bae]
registerclass(TForm1);
end.
Gostei + 0
27/05/2004
Guilherme B
Fiz exatamento conforme o exemplo apresentado pelo Carlos e continua dando o erro de classe não encontrada.
Não consigo fazer funcionar
Gostei + 0
28/05/2004
Info.wtomfs
Alguém pode ajudar ?
Gostei + 0
28/05/2004
Guilherme B
Será possível ?
Gostei + 0
28/05/2004
Info.wtomfs
Eles tem que resolver daí eu lançarei no Fórum Ok!!!
Gostei + 0
28/05/2004
Rômulo Barros
...
[size=18:7fbc1fb2da][color=red:7fbc1fb2da] Uses Classes;[/color:7fbc1fb2da][/size:7fbc1fb2da]
....
procedure TForm1.Button1Click(Sender: TObject); Var Nome : TComponentClass; Ref : TForm; begin Nome := TForm2; Application.CreateForm(TComponentClass(Nome),Form2); // Ou assim Application.CreateForm(Nome,Ref); Ref.Name := ´MeuForm´; Ref.ShowModal; end;
Gostei + 0
28/05/2004
Guilherme B
O NOME DO FORM É UMA VARIÁVEL .
GRATO
Gostei + 0
28/05/2004
Info.wtomfs
Procedure CriaForm(NomeForm : Tform);
Begin
NomeForm := TForm.Create(Application);
NomeForm.Show;
End
Else NomeForm.Show;
e na hora de chamar a procedure teria que existir por exemplo
CriarForm( StrToForm(MeuCampodeumaTabelacomnomedoForm.asString));
Entendeu...???
Valeu mesmo assim...
Gostei + 0
28/05/2004
Xanatos
Form: Tform;
begin
// Nome := TForm2;
// Application.CreateForm(TComponentClass(Nome),Form2);
FormClass := TFormClass(GetClass(´TFrCidade´));
Form := FormClass.Create(Application);
Form.Name := ´FrCidade´;
Form.Show;
end;
initialization // Nao esqueca disso
RegisterClasses([TFrCidade]); // Nao esqueca!!!
end.
Gostei + 0
28/05/2004
Xanatos
Var
FormClass: TformClass;
Form: Tform;
begin
FormClass := TFormClass(GetClass(´TFrCidade´));
Form := FormClass.Create(Application);
Form.Name := ´FrCidade´;
Form.ShowModal;
Var
Nome : TComponentClass;
T: TPersistentClass;
Ref : TForm;
FormClass: TformClass;
Form: Tform;
begin
// Nome := TForm2;
// Application.CreateForm(TComponentClass(Nome),Form2);
FormClass := TFormClass(GetClass(´TFrCidade´));
Form := FormClass.Create(Application);
Form.Name := ´FrCidade´;
Form.ShowModal;
Form.Free;
end;
e la embaixo de tudo:
initialization // Deve registrar todos os forms das chamadas!
RegisterClasses([TFrCidade]);
end.
Bom Agora acho que vai!!!
Gostei + 0
28/05/2004
Xanatos
procedure TFRprincipal.Cidades1Click(Sender: TObject);
Var
FormClass: TformClass;
Form: Tform;
begin
FormClass := TFormClass(GetClass(´TFrCidade´));
Form := FormClass.Create(Application);
Form.Name := ´FrCidade´;
Form.ShowModal;
Form.Free;
end;
initialization
RegisterClasses([TFrCidade, TFrPessoa]);
Gostei + 0
28/05/2004
Info.wtomfs
Como posso passar o parâmetro lá em baixo no inicialization ?
registerclass(?????????);
Pq não sei qual que vou chamar na hora, já que é dinâmico né ???
Tá embaçado né......rsrsrsrsrs
Valeu....
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)