Clique abaixo para nos ajudar
Conectar-se

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
14 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 14 Visitantes :: 2 Motores de busca

Nenhum

[ Ver toda a lista ]


O recorde de usuários online foi de 468 em 1/3/2012, 10:43
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

Controlar Scanner Twain

31/3/2017, 17:31 por Kleber R Bento

Estou usando o EZTW32.DLL para criar uma ferramenta que escaneia e gera PDF. Porém com esses …

Comentários: 0

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

Os nossos membros postaram um total de 47 mensagens em 24 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