Re: [delphi-br] form ja criado

2004-09-25 Por tôpico Marcelo Almeida
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

2004-09-24 Por tôpico Vitor Luiz Redes
>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

2004-09-24 Por tôpico Marcelo Almeida
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

2004-09-24 Por tôpico Vitor Luiz Redes
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

2004-09-24 Por tôpico Marcelo Almeida
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

2004-09-24 Por tôpico Vitor Luiz Redes
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

2004-09-24 Por tôpico Marcelo Almeida
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

2004-09-24 Por tôpico Vitor Luiz Redes
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

2004-09-24 Por tôpico Paulo Daniel Dorensbach
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

2004-09-24 Por tôpico CpdTrianon
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