In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Manejo de variables

Foro público de Xailer en español
Responder
jrcsistemas
Mensajes: 180
Registrado: Lun Sep 15, 2008 2:53 pm

Manejo de variables

Mensaje por jrcsistemas »

No hay caso. No se manejarme con las variables.
Si las declaro publicas en FormInitialize , igual no tengo su valor en los
distintos metodos de los controles.
Si la declaro en cada metodo, logicamente, existe, pero no es la misma que
declare publica al crear el formulario.
Quiero usar la misma variable y array en todo el PRG.
Por favor, se que debe ser sencillo, pero no se como hacerlo.
Gracias por ayudarme.
Ej:
METHOD FormInitialize( oSender ) CLASS TFormFacturaClientes
Public cCliente
Public cDatos := {}
....
RETURN Nil
METHOD ComboboxClientesCreate( oSender ) CLASS TFormFacturaClientes
....
cCliente := "12345"
Aadd( cDatos, "Juan")
Aadd( cDatos, "Pedro")
....
RETURN Nil
METHOD OtroMetodo( oSender ) CLASS TFormFacturaClientes
....
::oEditCodigo:cText := cCliente // Error: No existe la variable cCliente
::oEditNombre:cText := cDatos[2] // Error al acceder al array
....
RETURN Nil
Juan
Avatar de Usuario
Carlos Ortiz
Mensajes: 872
Registrado: Mié Jul 01, 2009 5:44 pm
Ubicación: Argentina - Córdoba
Contactar:

Manejo de variables

Mensaje por Carlos Ortiz »

Tenes un par de maneras, usando MEMVAR nombredelavariable
y sino usando AppData
AppData:AddData("cTipoLlamada","MiValor")
-> AppData:cTipoLlamada será pública ( creo que esta en la mejor manera)
Atte. CO.
"Juan Castañeda" <jrcsistemas@speedy.com.ar> escribió en el mensaje
news:[email=48f4ac96@ozsrv2.ozlan.local...]48f4ac96@ozsrv2.ozlan.local...[/email]
> No hay caso. No se manejarme con las variables.
> Si las declaro publicas en FormInitialize , igual no tengo su valor en los
> distintos metodos de los controles.
> Si la declaro en cada metodo, logicamente, existe, pero no es la misma que
> declare publica al crear el formulario.
>
> Quiero usar la misma variable y array en todo el PRG.
> Por favor, se que debe ser sencillo, pero no se como hacerlo.
>
> Gracias por ayudarme.
>
> Ej:
>
> METHOD FormInitialize( oSender ) CLASS TFormFacturaClientes
> Public cCliente
> Public cDatos := {}
> ...
> RETURN Nil
>
> METHOD ComboboxClientesCreate( oSender ) CLASS TFormFacturaClientes
> ...
> cCliente := "12345"
> Aadd( cDatos, "Juan")
> Aadd( cDatos, "Pedro")
> ...
> RETURN Nil
>
> METHOD OtroMetodo( oSender ) CLASS TFormFacturaClientes
> ...
> ::oEditCodigo:cText := cCliente // Error: No existe la variable cCliente
> ::oEditNombre:cText := cDatos[2] // Error al acceder al array
>
> ...
> RETURN Nil
>
>
> Juan
>
pacoelche
Mensajes: 141
Registrado: Mar Jul 11, 2006 10:32 am

Manejo de variables

Mensaje por pacoelche »

Hace tiempo pregunté lo mismo e Ignacio Ortiz me respondió esto:
Creela como DATA del propio objeto TForm
CLASS TForm1 FROM TForm
DATA MiData
END CLASS
La variable despues tienes que escribirla así­ ::MiData, por ejemplo
::MiData="Hola Mundo"
Un saludo
Francisco Martí­nez
"Juan Castañeda" <jrcsistemas@speedy.com.ar> escribió en el mensaje de
noticias:[email=48f4ac96@ozsrv2.ozlan.local...]48f4ac96@ozsrv2.ozlan.local...[/email]
> No hay caso. No se manejarme con las variables.
> Si las declaro publicas en FormInitialize , igual no tengo su valor en los
> distintos metodos de los controles.
> Si la declaro en cada metodo, logicamente, existe, pero no es la misma que
> declare publica al crear el formulario.
>
> Quiero usar la misma variable y array en todo el PRG.
> Por favor, se que debe ser sencillo, pero no se como hacerlo.
>
> Gracias por ayudarme.
>
> Ej:
>
> METHOD FormInitialize( oSender ) CLASS TFormFacturaClientes
> Public cCliente
> Public cDatos := {}
> ...
> RETURN Nil
>
> METHOD ComboboxClientesCreate( oSender ) CLASS TFormFacturaClientes
> ...
> cCliente := "12345"
> Aadd( cDatos, "Juan")
> Aadd( cDatos, "Pedro")
> ...
> RETURN Nil
>
> METHOD OtroMetodo( oSender ) CLASS TFormFacturaClientes
> ...
> ::oEditCodigo:cText := cCliente // Error: No existe la variable cCliente
> ::oEditNombre:cText := cDatos[2] // Error al acceder al array
>
> ...
> RETURN Nil
>
>
> Juan
>
jrcsistemas
Mensajes: 180
Registrado: Lun Sep 15, 2008 2:53 pm

Manejo de variables

Mensaje por jrcsistemas »

Gracias. Francisco y Carlos
Ya me funciona perfecto.
Lo estoy usando asi:
>
> Creela como DATA del propio objeto TForm
>
> CLASS TForm1 FROM TForm
>
> DATA MiData
>
> END CLASS
>
> La variable despues tienes que escribirla así ::MiData, por ejemplo
> ::MiData="Hola Mundo"
> Un saludo
> Francisco Martínez
>
Fernando Leal
Mensajes: 294
Registrado: Jue Mar 13, 2008 3:03 pm

Manejo de variables

Mensaje por Fernando Leal »

Juan,
no entiendo.
Si lo que buscas es iniciar valores en variables al iniciar al programa para
usarlos en otro formulario.
¿Cómo lo usas en otro formulario?.
Saludos
Fernando Leal
Mensajes: 294
Registrado: Jue Mar 13, 2008 3:03 pm

Manejo de variables

Mensaje por Fernando Leal »

Vale,
ya entendí­. Se trata de usarlo en el mismo prg.
Yo lo que necesito es usarlo en todo el programa.
Por ejemplo al iniciar mi programa abro una dbf que contiene las zonas
DATA aZonas INIT {}
abro la dbf
aadd( aZonas, { mis valores} )
Para usarlo en el resto del programa... guardo los valores en un TXT con
MemoWrit y los recupero en el formulario que lo necesite.
Lo anterior me permite abrir la dbf solo una vez en todo el programa, y en
cualquier momento puedo actualizar los valores si es necesario... funciona.
Aunque me da la impresión que debe de haber otra manera.
Saludos
Paco V
Mensajes: 380
Registrado: Jue Oct 27, 2005 9:08 am

Manejo de variables

Mensaje por Paco V »

No te vuelvas loco, utiliza las APPDATA.
Son visibles en toda la aplicación.
Paco V
"Fernando Leal" <visitante32@hotmail.com> escribió en el mensaje
news:48f5f639$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Vale,
> ya entendí. Se trata de usarlo en el mismo prg.
> Yo lo que necesito es usarlo en todo el programa.
> Por ejemplo al iniciar mi programa abro una dbf que contiene las zonas
> DATA aZonas INIT {}
>
> abro la dbf
> aadd( aZonas, { mis valores} )
>
> Para usarlo en el resto del programa... guardo los valores en un TXT con
> MemoWrit y los recupero en el formulario que lo necesite.
> Lo anterior me permite abrir la dbf solo una vez en todo el programa, y en
> cualquier momento puedo actualizar los valores si es necesario...
> funciona. Aunque me da la impresión que debe de haber otra manera.
>
> Saludos
Fernando Leal
Mensajes: 294
Registrado: Jue Mar 13, 2008 3:03 pm

Manejo de variables

Mensaje por Fernando Leal »

Ohhhh :-) Es verdad !!
Las datas son visibles a nivel formulario.
Y con el appdata puedo tenerlo en todo el programa.
Gracias Paco
Un saludo
PILO
Mensajes: 583
Registrado: Vie Jul 06, 2007 5:18 pm

Manejo de variables

Mensaje por PILO »

UN PEQUEÑO EJEMPLO POR FAVOR
"Paco V." <ssi@ono.com> escribió en el mensaje
news:[email=48f5fb7c@ozsrv2.ozlan.local...]48f5fb7c@ozsrv2.ozlan.local...[/email]
> No te vuelvas loco, utiliza las APPDATA.
>
> Son visibles en toda la aplicación.
>
> Paco V
> "Fernando Leal" <visitante32@hotmail.com> escribió en el mensaje
> news:48f5f639$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>> Vale,
>> ya entendí. Se trata de usarlo en el mismo prg.
>> Yo lo que necesito es usarlo en todo el programa.
>> Por ejemplo al iniciar mi programa abro una dbf que contiene las zonas
>> DATA aZonas INIT {}
>>
>> abro la dbf
>> aadd( aZonas, { mis valores} )
>>
>> Para usarlo en el resto del programa... guardo los valores en un TXT con
>> MemoWrit y los recupero en el formulario que lo necesite.
>> Lo anterior me permite abrir la dbf solo una vez en todo el programa, y
>> en cualquier momento puedo actualizar los valores si es necesario...
>> funciona. Aunque me da la impresión que debe de haber otra manera.
>>
>> Saludos
>
>
jrcpoli
Mensajes: 240
Registrado: Mié Oct 25, 2006 8:55 pm

Manejo de variables

Mensaje por jrcpoli »

Saludos:
La cosa es sencilla al inicio del programa haces así­:
Procedure Main()
REQUEST DBFCDX, DBFFPT
REQUEST HB_LANG_ES
REQUEST HB_CODEPAGE_ESMWIN
HB_LANGSELECT( "ES" )
HB_SETCODEPAGE( "ESMWIN" )
RddSetDefault("DBFCDX")
*
SET CENTURY ON
SET EPOCH TO 1980
SET DELETED ON
SET DATE FRENCH
*
Application:cTitle := "Aplicación Concurso"
Application:lSingleInstance := .T.
Application:oIcon := "AAICONPAL"
Application:lUseReturn := .T.
*
** Variables globales del sistema
AppData:AddData("gCaption", "Aviso de la Aplicación")
AppData:AddData("gVersion", "Versión " + Application:cVersion)
AppData:AddData("gFCopia", "15/10/2008" )
AppData:AddData("gRutaReport", Application:cDirectory + "Reportes" )
AppData:AddData("gDesig", "E")
AppData:AddData("Nclavemin", 0)
AppData:AddData("Nclavemax", 0)
AppData:AddData("Nclavecon", 0)
AppData:AddData("nTipo", 0)
*
** Llamada al formulario de inicio de la aplicación
Empezar()
Application:Run()
Return
Luego para obtener el valor de la variable en cualquier parte del programa
la llamas así­:
AppData:gCaption // sino has cambiado el valor devolverá "Aviso de la
Aplicación" (sin la comillas)
Si lo que quieres es cambiar el valor de la variable solo tienes que hacer:
AppData:gCaption := "Error en datos"
Ejemplo:
MsgStop("Error abriendo la base de datos " +
oDSInicio:cName,;
AppData:gCaption)
Espero que te sirva.
José Ramón Castro.
"PILO" <srmpilo@hotmail.com> escribió en el mensaje de noticias
news:48f70679$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> UN PEQUEí‘O EJEMPLO POR FAVOR
>
> "Paco V." <ssi@ono.com> escribió en el mensaje
> news:[email=48f5fb7c@ozsrv2.ozlan.local...]48f5fb7c@ozsrv2.ozlan.local...[/email]
>> No te vuelvas loco, utiliza las APPDATA.
>>
>> Son visibles en toda la aplicación.
>>
>> Paco V
>> "Fernando Leal" <visitante32@hotmail.com> escribió en el mensaje
>> news:48f5f639$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>>> Vale,
>>> ya entendí­. Se trata de usarlo en el mismo prg.
>>> Yo lo que necesito es usarlo en todo el programa.
>>> Por ejemplo al iniciar mi programa abro una dbf que contiene las zonas
>>> DATA aZonas INIT {}
>>>
>>> abro la dbf
>>> aadd( aZonas, { mis valores} )
>>>
>>> Para usarlo en el resto del programa... guardo los valores en un TXT con
>>> MemoWrit y los recupero en el formulario que lo necesite.
>>> Lo anterior me permite abrir la dbf solo una vez en todo el programa, y
>>> en cualquier momento puedo actualizar los valores si es necesario...
>>> funciona. Aunque me da la impresión que debe de haber otra manera.
>>>
>>> Saludos
>>
>>
>
>
José Ramón Castro.
jrcpoli
Mensajes: 240
Registrado: Mié Oct 25, 2006 8:55 pm

Manejo de variables

Mensaje por jrcpoli »

Saludos:
Para usar una variable AppData en la apertura de bases de datos podrí­as
utilizar
Al principio del programa defines una variable para el uso del DataSource
que apunte a un directorio donde estan las bases de datos con las que
quieres trabajar, y otras AppData con los nombres de todos los DataSet que
contienen las bases de datos a abrir.
Al principio del programa:
AppData:AddData("oCdxDSource" )
Appdata:AddData("oDbfLlegadasTest")
Luego defines el DataSource para el mismo directorio:
WITH OBJECT AppData:oCdxDSource := TCdxDataSource():New( Self )
:cConnect := e".Bases"
:Create()
END
Defines el DataSet:
WITH OBJECT AppData:oDbfLlegadasTest := TDbfDataSet():New( Self )
:cName := "LLEGADASTEST.DBF"
:oDataSource := AppData:oCdxDSource
:cProcess := "GENERAL"
:Create()
END
Posteriormente cuando necesites usar la base de datos solo tiene que hacer:
WITH OBJECT AppData:oDbfLlegadasTest
IF (:lOpen == .T.)
*****
*****
ENDIF
END
Lo he hecho al vuelo y por lo tanto puede que necesites otras
caracteristicas de los objetos a activar pero basicamente es así­.
José Ramón Castro.
"PILO" <srmpilo@hotmail.com> escribió en el mensaje de noticias
news:48f70679$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> UN PEQUEí‘O EJEMPLO POR FAVOR
>
> "Paco V." <ssi@ono.com> escribió en el mensaje
> news:[email=48f5fb7c@ozsrv2.ozlan.local...]48f5fb7c@ozsrv2.ozlan.local...[/email]
>> No te vuelvas loco, utiliza las APPDATA.
>>
>> Son visibles en toda la aplicación.
>>
>> Paco V
>> "Fernando Leal" <visitante32@hotmail.com> escribió en el mensaje
>> news:48f5f639$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>>> Vale,
>>> ya entendí­. Se trata de usarlo en el mismo prg.
>>> Yo lo que necesito es usarlo en todo el programa.
>>> Por ejemplo al iniciar mi programa abro una dbf que contiene las zonas
>>> DATA aZonas INIT {}
>>>
>>> abro la dbf
>>> aadd( aZonas, { mis valores} )
>>>
>>> Para usarlo en el resto del programa... guardo los valores en un TXT con
>>> MemoWrit y los recupero en el formulario que lo necesite.
>>> Lo anterior me permite abrir la dbf solo una vez en todo el programa, y
>>> en cualquier momento puedo actualizar los valores si es necesario...
>>> funciona. Aunque me da la impresión que debe de haber otra manera.
>>>
>>> Saludos
>>
>>
>
>
José Ramón Castro.
Responder