GARANTIR DESCONTO

Fórum Procedure para abrir um Form #234740

27/05/2004

0

Gostaria a patir de uma String com o nome de um formulário, saber se ele existe. E caso exista dar um Show no mesmo com o programa em modo de execução.

Lembrando: Gostaria de passar para uma Procedure no formato de uma String o nome do formulário que desejo abrir. E a procedure terá que verificar a existência do mesmo e abrir o form dinamicamente.

Se alguém puder ajudar!



[i:d155aa734e][b:d155aa734e]Um forte abraço,
André Ferreira.[/b:d155aa734e][/i:d155aa734e]


André Ferreira

André Ferreira

Responder

Posts

28/05/2004

Ehvasc

Saudações,

Existem dois procedimentos: um é o findwindow, ele te retorna se o form está aberto, a unica bronca é que ele tb funciona em tempo de desenvolvimento, ou seja enquanto vc estiver desenvolvendo seu sistema tem que fechar o form por que senão vai dar sempre como aberto. A outra é freeandnil, mas não sei direito como ela funciona e se funciona pra o que vc precisa. Em ambos os casos dá uma olhada no help do delphi pra ver a sintaxe dos procedimento/funcões. Quanto a criar um form passando uma string vc tem que dá um typecast no momento da passagem do parametro. Algo do tipo

Criaform((var_string) as TForm);

isso deve funcionar
Boa sorte

Eduardo Vasconcelos
ehvasc@hotmail.com


Responder

Gostei + 0

28/05/2004

Rcastro

ve se este procedimento ajuda...

procedure TDMod.CriaForm(Tformulario: TFormClass; Formulario: TForm);
begin
Try
Application.CreateForm(TFormulario, Formulario);
Formulario.ShowModal;
Finally
Formulario.Release;
End
end;

ele fica armazenado no meu DataModule, que contem outras funcionalidades genericas e chamo este procedimento de qq. outro form, passando os parâmetros.
O form criado é MODAL, e criado em tempo de execução - portando deve estar desabilitado no ´auto-create Forms´ - opções do Projeto.

Espero poder ajudar...
[], Ro


Responder

Gostei + 0

28/05/2004

Comodelphi

Isso é Alquimia ou é uma técnica de programação testada?. Eu antes de postar uma solução como esta (TypeCast de String para TForm), ao menos testaria pra ver o que acontece.

Imagina que o colega deva estar fazendo um sistema modularizado ou algo parecido. Eu estou desenvolvendo uma aplicação que guarda no registro do windows o nome da classe, que asssociado a um item de menu é chamado mas estou usando modulos ActiveX, talvez vc possa tentar fazer com dll´s simples.

No meu caso é assim:

Var
NomeDaClasse: String;

procedure Menu1Click(Sender as TObject);
Begin
CreateOleObject(NomeDaClasse); // Vinculação tardia
End;


é mais ou menos isso ai, e funciona!!!


Responder

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;
Form.Free;
end;

e lá em baixo voce coloca:

initialization
RegisterClasses([TFrCidade]);//aqui os nomes dos forms q serao chamados dinamicamente

end.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar