GARANTIR DESCONTO

Fórum Erro na criação de Forms #483777

26/06/2014

0

Fiz uma questão anteriormente sobre a criação de forms e já comecei a pegar as manhas, mas agora enfrento um problema muito estranho, eu crio dois forms, ambos possuem um componente TImage cada um, o compilador não acusa problema algum e o programa roda normalmente, mas quando eu clico no botão do primeiro form para abrir o segundo, aparece a mensagem : "A component named Image1 already exists." Ou seja, Um componente nomeado Image1 já existe. O mais estranho é que mesmo que eu renomeie Image1 para qualquer outro nome, ele continua a acusar o mesmo erro. Eu não uso um TImageList porque não conheço nenhum componente no qual eu possa colocar a imagem da mesma forma que no TImage, pois TImageList me parece ser mais usado para um Button. No clicar do botão eu implementei:

begin
form2:= form2.create(self);
form2.showmodal;
freeandnil(form2);
end;

Eu usei o componente TImage por que ele me permite adicionar uma imagem diretamente no Form, isso cria um visual mais interessante do que colocar em um botão por exemplo, se alguém souber uma form de inserir imagens diretamente no Form com o TImageList também vai me ajudar.

PS: Se eu passo o Form2 para Available Forms na opção Project -> Options -> Forms, quando tento criar o segundo form ele da um erro de Access Violation
Andrew Vargas

Andrew Vargas

Responder

Posts

27/06/2014

Joel Rodrigues

Existe algum código no evento OnCreate ou OnShow do Form2? Se sim, cole aqui por favor.

Obs.: use a formatação de código (primeiro botão) disponível na barra de formatação aqui na caixa de repostas.
Responder

Gostei + 0

27/06/2014

Itamar Souza

Bom dia
Se você tem 2 formulários, sendo o 1 chamando o segundo, você pode fazer assim.

procedure TForm1.Button1Click(Sender: TObject);
begin
  try
    Form2 := TForm2.Create(Application);
    Form2.ShowModal;
  finally
    FreeAndNil(Form2);
  end
end;




No form2 você adiciona o seu Image é na abertura da tela você faz assim:


procedure TForm2.FormShow(Sender: TObject);
 var
 FileName : string;
 begin
 //carrega a imagem
   FileName := 'C:\caminhodaimagem.jpg';
  if FileExists(FileName) then
     Image1.Picture.LoadFromFile(FileName)
   else
     Image1.Picture := nil;
end;




Mesmo que o formulário esteja no Available vai funcionar.
Responder

Gostei + 0

27/06/2014

Marco Salles

Quem é Form2 ???? é a Vraivel Global ???

Alguumas dicas podem não resolver seu problema , mas podem com certeza evitar OUTROS

1)

O Try vem Depois do Create

ERRADO
 try    
Form2 := TForm2.Create(Application);


CERTO
Form2 := TForm2.Create(Application);
try



TryAninhados

2) Segundo

A aplicação como Proprietária nesta estrutura não é aconselável .. Vc ests destruindo a Instancia e não a Aplicação . Logo o Proprietário deve ser NIL

Form2 := TForm2.Create(NIL);


3)Não Utilize a Variavel Global quando não tiver controle sobre a Intancia , a não ser se vc estiver utilizando um Padrão Singleton (que parece não ser o seu caso)

Faça assim

var
Form:TFORM;
begin
try
Form:=TFORM2.Create(Nil);
Form.ShowModal;  
finally    
FreeAndNil(Form); 
end
Responder

Gostei + 0

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

Aceitar