Jump to content


Photo

Erro Ao Abrir Form


  • Faça o login para participar
1 reply to this topic

#1 edudebom

edudebom

    12 Horas

  • Usuários
  • 149 posts
  • Sexo:Não informado
  • Localidade:Garibaldi-RS

Posted 07/02/2005, 12:51

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;

#2 The Tamer

The Tamer

    'F' motivos para se gostar de Hexa

  • Usuários
  • 185 posts
  • Sexo:Não informado

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:

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.
Boa sorte! ;)

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




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq