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
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
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
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: >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
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: >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
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
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 <*> 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
Verifica se ele está igual a nil []'s Topolniak. - Original Message - From: "tatu" <[EMAIL PROTECTED]> To: "[EMAIL PROTECTED]" <[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] 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