Fórum Como usar NULL para um parâmetro tipo quot;varquot; #332203
28/10/2006
0
Preciso usar na função um parâmetro tipo ´var´.
procedure ChamaForm(nNivel: integer; var FormChamou );
Como faço para poder não passar o parâmetro FormChamou, já que em determinadas partes do sistema, não vou utilizá-lo?
A chamada com parâmetro seria assim:
ChamaForm(1001,fCadPro)
Sem parâmetro
ChamaForm(1001)
Em parâmetros ´normais´ utilizo:
Teste: string = ´´ Teste2: integer = 0
Mas nesse caso não sem como colocar que esse parâmetro pode ser deixado em branco.
Obrigado a todos
Mario[/code]
Aldus
Curtir tópico
+ 0Posts
28/10/2006
Marco Salles
Gostei + 0
28/10/2006
Siam
Gostei + 0
28/10/2006
Tnaires
Como nosso colega [b:52574289f8]siam[/b:52574289f8] falou, você não precisa passar uma referência a um objeto usando [b:52574289f8]var[/b:52574289f8]. Basta fazer:
procedure ChamaForm(nNivel: integer; FormChamou: TForm );
Para escrever a função de forma que nem sempre seja necessário passar o segundo parâmetro, basta fazer:
procedure ChamaForm(nNivel: integer; FormChamou: TForm = nil );
Abraços
Gostei + 0
29/10/2006
Aldus
O objetivo dessa funcao é fazer com que determinadas partes do sistema quando estiver em um cadastro e chamar um outro, fazer com o que chamou ´já que vou passar´quem chamou fique transparente:
A funcao ficara mais ou menos assim:
procedure tform1.chamaform(nform: integer; formchamou: TForm = nil); begin // Primeiro faco a validacao if Pode acessar o form chamado then begin if FormChamou <> nil then begin formchamou.AlphaBlend := true; formchamou.AlphaBlendvalue := 120; end; if nForm = 1 then form2.ShowModal else if nform = 2 then form3.ShowModal ; if FormChamou <> nil then begin formchamou.AlphaBlendvalue := 255; formchamou.AlphaBlend := false; end; end; end;
Obrigado a todos e bom fim de semana
Mario
Gostei + 0
30/10/2006
Marco Salles
procedure tform1.chamaform(nform: integer; formchamou: TForm = nil); begin // Primeiro faco a validacao if Pode acessar o form chamado then begin if FormChamou <> nil then begin formchamou.AlphaBlend := true; formchamou.AlphaBlendvalue := 120; end; if nForm = 1 then form2.ShowModal else if nform = 2 then form3.ShowModal ; if FormChamou <> nil then begin formchamou.AlphaBlendvalue := 255; formchamou.AlphaBlend := false; end; end; end;
Não teria jeito de melhorar isto não ???? Pelo que to entendendo o valor
nform ja define o Formularoi ique sera chamado.. Alem disso o fato de voce ter duplicidade de codigos , por exemplo
if FormChamou <> nil then aparece duas vezes
sugere refactoring...
Alem do mais voce esta dentro de uma procedure do privativa do form1 tratando explicitamente com objetos (Form2 e Form3)... Veja se voce fizer disso uma prática , imagine que caso voce altere o nome dos Form do projeto , em consequencia voce ira ter que alterar o nome desse formularios em cada procedure.. Imagine ainda que essas proceudres são muitas ... Enfim , para mim , não constitui boa parte de POO , em termos de visuabilidade , reuso, encapsulamento etc.... é so uma opinião
Gostei + 0
30/10/2006
Aldus
Obrigado pela atenção
Mario
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)