Criar Form dinamicamente

Delphi

29/04/2005

Olá galera Delphi!

Procurei por um tópico com esse assunto, mas não encontrei. Então resolvi enviar este tópico...

:?

Meu problema é o seguinte: preciso criar uma função para criar Forms em tempo de execução. Pensei em fazer uma função do tipo CriaForm(param1, param2 : string), onde o param1 é o nome da variável do form e param2 é o nome do tipo (ComponentClass) do form. O problema é como faço o Create do form? Como faço o cast type para a variável e para a classe?

Não sei se esta é a única e / ou a melhor forma...

Grato antecipadamente pela ajuda.


Lercosta

Lercosta

Curtidas 0

Respostas

Yallebr

Yallebr

29/04/2005

Luiz Eduardo,


Não entendi bem.

CriaForm(param1, param2 : string), onde o param1 é o nome da variável do form e param2 é o nome do tipo (ComponentClass) do form. O problema é como faço o Create do form? Como faço o cast type para a variável e para a classe?


Param1 = Nome do Formulário. Ex FrmTeste1
Param2 = Tipo do Form TForm. Se é para cirar apenas form, então não precisa esse segundo parametro.

seria assim ao meu ver

procedure CriaForm(NomeDoForm);
var
  NovoForm: TFrom
begin
  NovoForm := TForm.Create(nil)
  Novoform.Name := NomeDoForm
end;



GOSTEI 0
Lercosta

Lercosta

29/04/2005

Obrigado pela pronta resposta Yalle.

Eu posso criar esse form mesmo se não herdar diretamente de TForm? Eu tenho alguns Forms de modelo e uma das minhas dúvidas é se o form será criado mesmo sendo herdado diretamente de outro Form que não seja o TForm...

Grato.


GOSTEI 0
Massuda

Massuda

29/04/2005

Faça uma [url=http://forum.clubedelphi.net/search.php]pesquisa[/url] aqui no fórum pela palavra [b:a549f1063d]TFormClass[/b:a549f1063d].


GOSTEI 0
Lercosta

Lercosta

29/04/2005

Obrigado Matsuda!

Já entendi como funciona.

O problema é que eu queria criar todos os Forms do projeto para verificar os componentes que necessitam ser cadastrados automaticamente para o Controle de Acesso. Explico melhor: estamos fazendo um controle de acessos para os novos sistemas desenvolvidos para a nossa empresa. Para evitarmos o trabalho de cadastrarmos os componentes que os usuários terão acesso, alteraremos a propriedade Tag de cada componente que quisermos controlar. Para isso deverá existir uma função que lerá todos os componentes de todos os Forms para saber quais serão controlados. Como fazer isso se nem todos os Forms estão criados. Acho que através do TScreen só aparecem os Forms criados, correto?

Grato mais uma vez pela ajuda!


GOSTEI 0
Yallebr

Yallebr

29/04/2005

Eu posso criar esse form mesmo se não herdar diretamente de TForm?


Sim, claro. Vc pode herdar até de TObject. Mas ai vc vai ter muito trabalho, vai refazer o que a borland fez. (Bom que se vc fizer um TSeuForm melhor que o TForm podia postar aqui para nós o código. 8) )

Brincadeira.

Eu recomendaria vc herdar de TCustomForm se vc quer ser um pouco mais radical em relação ao TForm. Assim vc aproveitaria quase 100¬ do trabalho já feito pela Borland.

E para aproveitar 100¬ do TFrom herde diretamente do TForm, assim vc so especializa ele para sua necessidade.

Abraços


GOSTEI 0
Massuda

Massuda

29/04/2005

Acho que através do TScreen só aparecem os Forms criados, correto?
Sim... a idéia de vocês fura no caso dos forms que não foram criados ainda.


GOSTEI 0
POSTAR