O código abaixo recebe uma string como parametro. Até aí tudo bem, mas como fazer para passar essa string para tipo tform e abrir ela como um form ?
obrigado
Eduardo
procedure TForm_principal.Abrir_Form_Geral(nome_form: string);
var
nome_form_temp : tform;
begin
nome_form_temp:= TForm(nome_form);
nome_form_temp.Show;
// nome_form_temp.Update;
end;
Erro Ao Abrir Form
Started By edudebom, 07/02/2005, 12:51
1 reply to this topic
#1
Posted 07/02/2005, 12:51
#2
Posted 08/02/2005, 17:14
Não me lembro se dará certo pois estou sem o Delphi instalado, mas tente o seguinte:
Primeiro você tem que ter o 2º Form, que será aberto várias vezes com o nome diferente. Então crie o Form2, e retire-o em OPTIONS da lista de criação. Assim, quando carregar seu aplicativo, esse Form2 não será alocado na memória.
Você usa o valor nome_form para carregar a variável de nome dele, ficaria algo parecido como:
Mas atenção
Criar formulários dinamicamente exige um bom tratamento para não sujar a memória, então, envolva o seu código de criação com TRY.
Outra dica, é dentro do evento OnClose do seu Form2 (o que será aberto várias vezes), colocar o comando:
E o mais importante
Isso que você está fazendo, é criar componentes (TForm2 torna-se um componente entre aspas) usando referencias de classe. Então, você deve obedecer duas regras simples:
Primeiro você tem que ter o 2º Form, que será aberto várias vezes com o nome diferente. Então crie o Form2, e retire-o em OPTIONS da lista de criação. Assim, quando carregar seu aplicativo, esse Form2 não será alocado na memória.
Você usa o valor nome_form para carregar a variável de nome dele, ficaria algo parecido como:
procedure TForm_principal.Abrir_Form_Geral(nome_form: string); var nome_form_temp : TForm2; begin nome_form_temp:= TForm2.create(self); nome_form_temp.name := nome_form; nome_form_temp.Show; end;
Mas atenção
Criar formulários dinamicamente exige um bom tratamento para não sujar a memória, então, envolva o seu código de criação com TRY.
Outra dica, é dentro do evento OnClose do seu Form2 (o que será aberto várias vezes), colocar o comando:
Action := caFree;Assim, você estará liberando da memória logo quando fecha o formulário, evitando que eles sejam liberados somente quando fechar o aplicativo. O que um uso prolongado de seu programa, pode carregar demais a memória do seu usuário, uma vez que apesar de fechados, estão na memória ocupando espaço.
E o mais importante
Isso que você está fazendo, é criar componentes (TForm2 torna-se um componente entre aspas) usando referencias de classe. Então, você deve obedecer duas regras simples:
- Você deve destruir todo o objeto que cria; e
- Você deve destruir uma instancia uma única vez.
Edição feita por: The Tamer, 08/02/2005, 17:20.
__________________________________________
The Tamer
Quando morrer, escrevam em minha lápide: </life>
Blog: http://www.dtsoftware.eti.br/
MCWD - Macromedia Certified Web Designer MX
The Tamer
Quando morrer, escrevam em minha lápide: </life>
Blog: http://www.dtsoftware.eti.br/
MCWD - Macromedia Certified Web Designer MX
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)