Criar Form dinamicamente
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.
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
Curtidas 0
Respostas
Yallebr
29/04/2005
Luiz Eduardo,
Não entendi bem.
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
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
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.
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
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
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!
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
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
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