Clique abaixo para nos ajudar
Conectar-se

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
1 usuário online :: Nenhum usuário registrado, Nenhum Invisível e 1 Visitante :: 1 Motor de busca

Nenhum

[ Ver toda a lista ]


O recorde de usuários online foi de 468 em 1/3/2012, 10:43
CONEXÃO MYSQL EM SITES

25/7/2018, 16:28 por AMELIO

BOA TARDES A TODOS
ESTOU TENTO UM PROBLEMINHA QUE QUANDO FAÇO A CONEXÃO MYSQL EM SERVIDOR  


Comentários: 0

COMO ESTÃO DESENVOLVENDO EM WEB?

22/8/2016, 10:48 por AJC

Pessoal, já lí sobre vários topicos aqui no forum sobre desenvolvimento web
mas ainda nada …

Comentários: 3

TRY BEGIN E FLOCK()

17/4/2017, 10:32 por AJC

Pessoal estou tendo alguns problemas de gravação em rede, estou usando
try begin, mas vi algo na …

Comentários: 1

DESENVOLVIMENTO EM REDES

4/3/2017, 18:45 por AJC

Pessoal tem ou conhece livros ou material para programação em
redes usando banco de dados nativo …

Comentários: 1

ACESSAR WEBSERVICE COM HTTPS

5/4/2018, 14:48 por AJC

Pessoal recebi este material em C# preciso fazer esta função em vfp9

YourBeanService port = new …

Comentários: 0

Estatísticas
Temos 7095 usuários registrados
O último usuário registrado atende pelo nome de Robson0

Os nossos membros postaram um total de 12261 mensagens em 1555 assuntos

Trabalhando com classes (.prg) no VFP 9.0

Ir em baixo

Tutorial Trabalhando com classes (.prg) no VFP 9.0

Mensagem por Marcos Guedes em 6/11/2009, 11:52

Uma forma muito prática, porém - aparentemente - não muito utilizada, para se trabalhar com códigos no Visual FoxPro, é a utilização de classes em arquivos .prg.

Como criar tais classes?

Basta utilizar o seguinte modelo de código:
Código:
#DEFINE _enter CHR(13)+CHR(10)

DEFINE CLASS minhaclasse AS CUSTOM

   PROCEDURE minhafuncao AS void
      MESSAGEBOX(THIS.funcaointerna(), 48, "minhaClasse")
   ENDPROC

   HIDDEN FUNCTION funcaointerna AS STRING
      *!* O atributo HIDDEN torna esta função invisível para os
      *!* objetos instanciados desta classe.
      *!* Sendo assim esta função poderá ser utilizada apenas pelas
      *!* demais funções de classe.
      LOCAL mensagem AS STRING
      *!*
      m.mensagem = "Texto contido na função interna da classe!" + _enter
      m.mensagem = m.mensagem + "Esta função não poderá ser acessada por uma instância da classe"
      *!*
      RETURN m.mensagem
   ENDFUNC

ENDDEFINE

Como utilizar a classe criada?

Para chamar as funções, contidas em sua classe, basta seguir o seguinte modelo (Baseado na classe “minhaclasse” criamos):
Código:
LOCAL obj as Object
*!* Instancia um objeto da classe "minhaclasse"
m.obj = NEWOBJECT("minhaclasse", "caminhoDoArquivo\nomeArquivo.prg")
*!* Chama a função disponível na classe criada
m.obj.minhafuncao()
m.obj = NULL

Obs.:No exemplo de como utilizar as funções contidas na classe, temos a descrição "caminhoDoArquivo".
O ideal é utilizar o caminho relativo à pasta default de sua aplicação.
Ou seja, digamos que sua aplicação tem como diretório default o caminho "C:\aplicacao\" e você armazena seus códigos em "C:\aplicacao\prgs", na hora de instanciar um objeto de sua classe, o modelo de código a ser utilizado seria:
Código:
LOCAL obj as Object
*!* Instancia um objeto da classe "minhaclasse"
m.obj = NEWOBJECT("minhaclasse", "prgs\nomeArquivo.prg")
*!* Chama a função disponível na classe criada
m.obj.minhafuncao()
m.obj = NULL

Espero ter ajudado!
Qualquer dúvida é só postar!
Very Happy


Última edição por Marcos Guedes em 27/11/2009, 12:22, editado 1 vez(es)

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Tutorial Re: Trabalhando com classes (.prg) no VFP 9.0

Mensagem por Marcos Guedes em 6/11/2009, 13:17

Propriedades de uma classe:

Algo que é de grande importância numa classe é a criação de propriedades.
Tomaremos, como exemplo, a seguinte classe:
Código:
DEFINE CLASS propriedades AS CUSTOM

   HIDDEN propriedadeinvisivel AS STRING
   propriedadevisivel = "Propriedade Visível"

   FUNCTION lerinvisivel AS String
      RETURN THIS.propriedadeinvisivel
   ENDFUNC

   PROCEDURE alterarinvisivel AS void
      LPARAMETERS novovalor AS STRING
      THIS.propriedadeinvisivel = m.novovalor
   ENDPROC

   HIDDEN PROCEDURE INIT AS void
      THIS.propriedadeinvisivel = "Propriedade Invisível"
   ENDPROC

ENDDEFINE

Ao executarmos o seguinte código, certamente obteremos um erro:
Código:
LOCAL objClasse as Object
m.objClasse = NEWOBJECT("propriedades")
?m.objClasse.propriedadeinvisivel

Isto ocorre por que a variável foi declarada como "HIDDEN", podendo ser utilizada apenas dentro da própria classe, e não por objetos instanciados.

O mesmo ocorre se tentarmos alterar o seu valor, conforme o exemplo a seguir:
Código:
LOCAL objClasse as Object
m.objClasse = NEWOBJECT("propriedades")
m.objClasse.propriedadeinvisivel = "Novo valor"

Por conta disto, foi necessário a criação de duas funções em nossa classe, para que possamos ler e alterar o valor da propriedade "propriedadeinvisivel". São elas: "lerinvisivel()" e "alterarinvisivel()".

Logo se torna possível ler o conteúdo de nossa variável "protegida", da seguinte forma:
Código:
CLEAR

LOCAL objclasse AS OBJECT
m.objclasse = NEWOBJECT("propriedades")
?m.objclasse.lerinvisivel()

E para alterar seu valor, poderemos fazer o seguinte:
Código:
LOCAL objclasse AS OBJECT
m.objclasse = NEWOBJECT("propriedades")
m.objclasse.alterarinvisivel("Novo valor de minha variável")

No caso da propriedade "propriedadevisivel", não há tantas restrições.

Para ler sua propriedade, é necessário fazermos o seguinte:
Código:
LOCAL objclasse AS OBJECT
m.objclasse = NEWOBJECT("propriedades")
?m.objclasse.propriedadevisivel

E para alterar seu valor:
Código:
LOCAL objclasse AS OBJECT
m.objclasse = NEWOBJECT("propriedades")
m.objclasse.propriedadevisivel = "Novo valor para a variável"

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum