Página 1 de 1

Manejo de variables

Publicado: Mar Oct 14, 2008 4:28 pm
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

Manejo de variables

Publicado: Mar Oct 14, 2008 4:58 pm
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
>

Manejo de variables

Publicado: Mié Oct 15, 2008 8:03 am
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
>

Manejo de variables

Publicado: Mié Oct 15, 2008 2:36 pm
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
>

Manejo de variables

Publicado: Mié Oct 15, 2008 3:49 pm
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

Manejo de variables

Publicado: Mié Oct 15, 2008 3:55 pm
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

Manejo de variables

Publicado: Mié Oct 15, 2008 4:17 pm
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

Manejo de variables

Publicado: Mié Oct 15, 2008 9:41 pm
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

Manejo de variables

Publicado: Jue Oct 16, 2008 11:16 am
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
>
>

Manejo de variables

Publicado: Jue Oct 16, 2008 11:35 am
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
>>
>>
>
>

Manejo de variables

Publicado: Jue Oct 16, 2008 12:42 pm
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
>>
>>
>
>