Re: [delphi-br] form ja criado
Vitor Luiz Redes wrote: e adotar a MDI não é o caso, nunca trabalhei com forms MDI (nunca houve necessidade), mas pelo que já vi e ouvi, é complicado, e tem alguns Bug´s. A propria microsoft recomenda não usar MDI por causa dos bugs, mas tem gente que insiste. Quando a destruição de formulários, procuro sempre cria-los em tempo de execução, e destruir somente os formulários que não são necessários, portanto uso sempre Release, ou FreeandNil, em casos mais simples. A ideia do Action := cafree é que o release é feito automaticamente no close do form. Se vc usa sempre a variavel form1 para criar o TForm1, vc pode colocar action := cafree e form1 := nil no onclose do form que iria funcionar tambem. O único detalhe desta implementação é que vc não consegue acessar nada do form depois do showmodal. -- Marcelo Almeida -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
[delphi-br] form ja criado
como consigo descubrir se um terminado form ja foi criado ? -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
RES: [delphi-br] form ja criado
Essa dica (form NIL) não é 100% confiável. Ela pode estar diferente de NIL e, no entanto, apontar para uma referência que já tenha sido liberada. Pra isso realmente funcionar bacana, no momento da liberação do form, a variável de instância do mesmo tem que apontar para NIL (ou seja, form := NIL)! []s -Mensagem original- De: Paulo Daniel Dorensbach [mailto:[EMAIL PROTECTED] Enviada em: sexta-feira, 24 de setembro de 2004 13:47 Para: [EMAIL PROTECTED] Assunto: Re: [delphi-br] form ja criado tatu escreveu: como consigo descubrir se um terminado form ja foi criado ? Assim: if (form nil) then [ ]'s -- Paulo Daniel Dorensbach Usuario GNU/Linux 363631 - http://counter.li.org NBR para a Internet já! Porque meu navegador não é penico. http://www.w3.org/2003/03/Translations/byLanguage?language=pt-br Não me entrego sem lutar, tenho ainda coração Não aprendi a me render, que caia o inimigo então... Metal contra as nuvens - Legião Urbana By Mozilla Thunderbird www.mozilla.org.br -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [delphi-br] form ja criado
Você pode fazer a verificação de duas maneiras : if Form = Nil If Assigned(Form) Particularmente, acho que a segunda opção é melhor, ela não deixa brechas Como por exemplo, o Form pode ser diferente de nil, e mesmo assim não estar criado ... Três salvas aos bons livros. São o deleite dos sábios, a educação dos ignorantes e os verdadeiros feitos de nossa raça: Os Seres Humanos Vitor Luiz Redes Redsystem Informática - Original Message - From: tatu To: [EMAIL PROTECTED] Sent: Friday, September 24, 2004 12:32 PM Subject: [delphi-br] form ja criado como consigo descubrir se um terminado form ja foi criado ? -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Yahoo! Grupos, um serviço oferecido por: -- Links do Yahoo! Grupos a.. Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ b.. Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!. [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [delphi-br] form ja criado
Vitor Luiz Redes wrote: Você pode fazer a verificação de duas maneiras : if Form = Nil If Assigned(Form) Particularmente, acho que a segunda opção é melhor, ela não deixa brechas Como por exemplo, o Form pode ser diferente de nil, e mesmo assim não estar criado ... Errado. Exemplo retirado do help do delphi var P: Pointer; begin P := nil; if Assigned (P) then Writeln ('You won''t see this'); GetMem(P, 1024);{P valid} FreeMem(P, 1024);{P no longer valid and still not nil} if Assigned (P) then Writeln ('You''ll see this'); end; Resumindo: se vc der free, o assigned continua retornando true. A única forma garantida de verificar se o form está criado é procurando ele em screen.forms. -- Marcelo Almeida -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [delphi-br] form ja criado
Certo ! Mas depende da maneira como destruímos o objeto TForm. Se você fizer um teste com um Form.ShowModal, e um Form.Free, o Assigned retornará true, mas se destruírmos o form com FreeandNil(Form), o Assigned retornará False, da mesma forma, retornará se o objeto for destruído com Free, e tendo um valor nil atribuido a ele. Terminando, ao meu ver, a maneira mais correta de destruir um objeto é FreeAndNil, ou Form.Releasee e Form:=NIL ... o Free não é muito indicado para se destruir um form (Help - TCustomForm.Release) ... já que o Release executa todos os métodos pertinentes ao fechamento, destruição do objeto ... Considerando que a destruição dos objetos é feita corretamente, o Assigned funcionará ... assim como o Screen.Forms ... Três salvas aos bons livros. São o deleite dos sábios, a educação dos ignorantes e os verdadeiros feitos de nossa raça: Os Seres Humanos Vitor Luiz Redes Redsystem Informática [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [delphi-br] form ja criado
Vitor Luiz Redes wrote: Considerando que a destruição dos objetos é feita corretamente, o Assigned funcionará ... assim como o Screen.Forms Errado novamente. O Screen.Forms é a única maneira garantida de saber se o form está criado. Motivos : - vc pode criar o form sem usar variavel global - vc pode criar o form mais de uma vez e dar freeandnil em um deles. - vc não precisa de fazer 'form := nil'. - vc pode usar 'action := cafree' no onclose. Posso arrumar mais alguns motivos... -- Marcelo Almeida -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [delphi-br] form ja criado
Você está certo. Mas o que eu queria dizer com a mensagem anterior, é que deve-se tomar cuidado com a destruição de objetos. Mas como o Screen, é a Screen, então concordo que é a maneira mais segura de verificar a existência de um formulário. Três salvas aos bons livros. São o deleite dos sábios, a educação dos ignorantes e os verdadeiros feitos de nossa raça: Os Seres Humanos Vitor Luiz Redes Redsystem Informática [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [delphi-br] form ja criado
Vitor Luiz Redes wrote: Mas o que eu queria dizer com a mensagem anterior, é que deve-se tomar cuidado com a destruição de objetos. Neste ponto vc está certissimo. Muita gente erra na hora de destruir os forms. Como vc disse nas msgs anteriores, a maneira correta é usar o Release. De acordo com a documentação, o release respeita a fila de msgs do windows e o free não; então, teoricamente, usando o free, o programa pode deixar de fazer alguma coisa, ou tentar usar algo que já foi destruido. Digo teoricamente porque nunca ví acontecer nenhuma das 2 situações. Atualmente estou usado sempre o 'action := cafree' e não me preocupo com destruição de form. Meus sistemas estão sempre trabalhando com o form dentro de um tabsheet, ou seja, aparentemente só existe o form principal. Para saber se o form está ou não criado eu procuro ele no pagecontrol, se tiver eu ativo a tabsheet associada ao form, senão eu crio a tabsheet e coloco o form dentro. Funciona muito bem para o tipo de sistema que desenvolvo (B2B), os clientes estão achando bem simples de trabalhar assim, sem um punhado de tela, uma em cima da outra. -- Marcelo Almeida -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [delphi-br] form ja criado
De acordo com a documentação, o release respeita a fila de msgs do windows e o free não; então, teoricamente, usando o free, o programa pode deixar de fazer alguma coisa, ou tentar usar algo que já foi destruido. Digo teoricamente porque nunca ví acontecer nenhuma das 2 situações. Boa, eu nunca vi também. Atualmente estou usado sempre o 'action := cafree' e não me preocupo com destruição de form. Meus sistemas estão sempre trabalhando com o form dentro de um tabsheet, ou seja, aparentemente só existe o form principal. Para saber se o form está ou não criado eu procuro ele no pagecontrol, se tiver eu ativo a tabsheet associada ao form, senão eu crio a tabsheet e coloco o form dentro. Interessante, é uma boa solução para muitos formulários, já que a aparência é mais amigável. Até para quem desenvolve, trabalhar com muitas telas, não é muito bom, confunde, mesmo que você crie recursos de acesso rápido (como links, ou até mesmo um Run, como o do Windows), e adotar a MDI não é o caso, nunca trabalhei com forms MDI (nunca houve necessidade), mas pelo que já vi e ouvi, é complicado, e tem alguns Bug´s. Quando a destruição de formulários, procuro sempre cria-los em tempo de execução, e destruir somente os formulários que não são necessários, portanto uso sempre Release, ou FreeandNil, em casos mais simples. Valeu pelas dicas e sucesso ! Três salvas aos bons livros. São o deleite dos sábios, a educação dos ignorantes e os verdadeiros feitos de nossa raça: Os Seres Humanos Vitor Luiz Redes Redsystem Informática [As partes desta mensagem que não continham texto foram removidas] -- FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html