Clique abaixo para nos ajudar
Conectar-se

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

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

Nenhum

[ Ver toda a lista ]


O recorde de usuários online foi de 468 em 1/3/2012, 10:43
ListBox

23/5/2017, 10:37 por Rosangela Pires

Ola Amigos.

Para se movimentar na grid com as setas colocamos no Metodo AfterChange da grid …

Comentários: 0

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: 0

Exportar Dados Campo Memo Tabela DBF

10/4/2017, 10:28 por fcampos

Olá bom dia.

Estou tentando exportar os dados de algumas tabelas em formato dbf pelo foxpro.
O …

Comentários: 2

Função EVL()

8/4/2017, 12:18 por Clebervfp

Bom dia a todos.
Vim compartilhar de uma Função do próprio VFP que me benefício muito.
Função …

Comentários: 0

COMO BLOQUEAR REGISTRO OU TABELA NO VISUAL FOXPRO PARA GRAVAÇÃO EM REDE

3/4/2017, 10:29 por AJC

Pessoal estou tendo um problema que acontece sempre busco na minha tabela de clientes o ultimo …

Comentários: 2

Estatísticas
Temos 7081 usuários registrados
O último usuário registrado atende pelo nome de DENISON SANTOS DA SILVA

Os nossos membros postaram um total de 49 mensagens em 26 assuntos

Trabalhando com classes (.prg) no VFP 9.0

Ver o tópico anterior Ver o tópico seguinte 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

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


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