variavei publicas ?

18/01/2006

Boa boite

estou criando um programa frente de caixa. E quando o usuario entra no sistemas tem que informar a Filial e codigo ae faço uma busca por Filial + codigo retorno o nome ate ae tudo bem, agora :

como posso saber o que foi recuperado durante toda a execução do sistema, enquanto o ususario estiver logado.

qual e a melhor maneira, Propriedade no form etc...


obrigado


Pereiramarcos

Respostas

19/01/2006

Thomaz_prg

O que você quer é armazenar o código e filial??

Se for, basta criar as variáveis públicas mesmo.


Responder Citar

19/01/2006

Pereiramarcos

thomaz , valeu cara

vou Armazenar sim, e tudo que o uzuario fizer, por exemplo :
que foi o usuario e de qual filial.

o usuario que recebeu a fatura xyz, ou o cupom xyz nao sei se estou sendo claro ele sera o caixa aberto. E tudo que o caixa fizer sera registrado com o codigo dele.

ae fiquei em duvida se criar uma variavel publica ou uma propriedade no form, haja visto que sera varios forms.
é um programa de frente de caixa
logo ele baica contas a receber, baixa estoque da entrada de cheque cartao etc....


Responder Citar

19/01/2006

Michael

Use sempre que possível propriedades e campos de formulários, e evite ao máximo variáveis globais.

Mesmo programando RAD, mantenha os bons constumes da orientação a objetos. ;-)

[]´s


Responder Citar

19/01/2006

Thomaz_prg

Mas tipo, se ele preferir, pode criar uma ´Classe´ simples, para as variáveis. Em uma unit separada. Assim daria maior organização do que vincular isso a um formulário.


Responder Citar

19/01/2006

Michael

Não vejo problemas de organização ao se usar propriedades em formulários. O que se está fazendo é apenas extender a classe TForm, com características próprias de cada tela do programa. Um form é uma classe como qualquer outra, e pode ser derivado e extendido tbm.

[]´s


Responder Citar

19/01/2006

Pereiramarcos

Thomaz, obrigado pela dica pode me dar um exemplo pra eu ver como ficaria.

obrigado michael, pode me dar um exemplo, ou seria isso :

form=class(tform)

property codigo:string

end;

acho que estou misturando Foxpro com delphi... :cry:


Responder Citar

19/01/2006

Michael

Segue abaixo o exemplo:

TForm1 = class(TForm)
...
private
  FMinhaPropriedade: string;
public
  property MinhaPropriedade: string read FMinhaPropriedade write FMinhaPropriedade;
end;

...

Form1.MinhaPropriedade := ´Michael´;


Se quiser que a propriedade seja somente-leitura, retire o [b:504d596ff5]write FMinhaPropriedade[/b:504d596ff5] do código.

[]´s


Responder Citar

20/01/2006

Pereiramarcos

obrigado michael, vou implementar.


Responder Citar

20/01/2006

Siam

Mas se a property é read e write, qual a diferença de definir uma variável pública diretamente ?


Responder Citar

23/01/2006

Michael

Variáveis globais (ou públicas, tanto faz) não são recomendadas por várias razões, entre elas por fazerem a aplicação depender de units, e não de objetos.

É altamente aconselhável programar OO em uma ferramenta OO, como o Delphi, do que seguir o modelo linear e procedural do antigo Pascal.

Se quiser saber mais sobre o assunto, acho q ele já foi discutido antes aqui no fórum. Faça uma pesquisa rápida e tente achar algo. ;-)

[]´s


Responder Citar

23/01/2006

Siam

Variáveis globais (ou públicas, tanto faz) não são recomendadas por várias razões, entre elas por fazerem a aplicação depender de units, e não de objetos.
Como assim ?
Em seu exemplo anterior:
TForm1 = class(TForm) 
... 
private 
  FMinhaPropriedade: string; 
public 
  property MinhaPropriedade: string read FMinhaPropriedade write FMinhaPropriedade; 
end; 

... 

Form1.MinhaPropriedade := ´Michael´;
Para vc utilizar MinhaPropriedade do objeto Form1 vc não tem que enxergar a unit onde ele está se for acessada de outra unit ?

O que quiz dizer é que não vejo diferença entre colocar FMinhaPropriedade como pública e utilizar uma property read/write.


Responder Citar

23/01/2006

Aroldo Zanela

Colega,

Usando este exemplo simples, parecem ser a mesma ´coisa´. Entretanto, há uma significativa diferença conceitual. Em OO, atributos são privados e métodos são públicos e o Delphi possue as propriedades que são mais abrangentes que simples métodos Gets e Sets. Isto visa evitar furos de encapsulamento.


Responder Citar

23/01/2006

Pereiramarcos

Complicou um pouco , se eventos sao publicos e propriedades sao privadas, assim nao esta errado, porem nao e aconselhavel e isso ?
pq fere os conceitos do Delphi.....

alguem pode dar um exemplo para dar uma clareada


Responder Citar

23/01/2006

Aroldo Zanela

Complicou um pouco , se eventos sao publicos e propriedades sao privadas, assim nao esta errado, porem nao e aconselhavel e isso ? pq fere os conceitos do Delphi..... alguem pode dar um exemplo para dar uma clareada

Colega,

Por curiosidade, em que parte do texto eu disse que propriedades são privadas? Onde foi mencionado eventos?


Responder Citar

24/01/2006

Siam

Colegas, no meu caso; utilizo uma property se ela for somente read ou somente write. Se for read/write eu declaro como variável pública.
Sempre programei assim e nunca me deu nenhum problema.[quote:4907b40267=´Aroldo Zanela´]...Isto visa evitar furos de encapsulamento[/quote:4907b40267]Poderia dar algum exemplo de furo de encapsulamento ?


Responder Citar