Os comento el problema que me sucede. Tengo un formulario llamado
clientes, y un par de tablas en la base de datos(clientes,proveedores).
Ambas tablas son exactamente iguales, lo unico que cambia entre ellas es
el nombre.
Entonces, me interesaría utilizar el mismo formulario para ambas tablas
y se me había ocurrido modificar la propiedad 'cargo' del formulario
clientes, y añardirle "clientes" o "proveedores" en función desde donde
se llame, y a partir de ahí, cambiar la consulta SQL a la base de datos
(SELECT * from CLIENTES) por (SELECT * FROM proveedores) en función de
la propiedad cargo.
El código es este, y se llama desde el formulario principal de la
aplicación.
//---------------------------------------------------------
METHOD CargaProveedores( oSender, oMenu ) CLASS FrmPrincipal
LOCAL oForm:=FrmClientes():CreateForm(Self)
WITH OBJECT oForm
:Cargo:="Proveedores"
:cText:="Listado de proveedores"
:Show()
END WITH
RETURN Nil
//----------------------------------------------------------
Cuando ejecuto la aplicación, no da errores ni warnings, pero al crear
el formulario, las propiedades que le asigne antes de :Show() no se
asignan. ¿Es problema del tipo de variable (LOCAL) usada?
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.
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.
Modificar propiedades de un formulario
- ignacio
- Site Admin
- Mensajes: 9459
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Modificar propiedades de un formulario
Angel,
Prueba con:
LOCAL oForm:=FrmClientes()
WITH OBJECT oForm
:Cargo:="Proveedores"
:cText:="Listado de proveedores"
:New( Self )
:Create()
:Show()
END WITH
Saludos
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Ángel Fernández" <angel@agelso.com> escribió en el mensaje
news:[email=4732e04c@ozsrv2.ozlan.local...]4732e04c@ozsrv2.ozlan.local...[/email]
> Os comento el problema que me sucede. Tengo un formulario llamado
> clientes, y un par de tablas en la base de datos(clientes,proveedores).
> Ambas tablas son exactamente iguales, lo unico que cambia entre ellas es
> el nombre.
> Entonces, me interesaría utilizar el mismo formulario para ambas tablas y
> se me había ocurrido modificar la propiedad 'cargo' del formulario
> clientes, y añardirle "clientes" o "proveedores" en función desde donde se
> llame, y a partir de ahí, cambiar la consulta SQL a la base de datos
> (SELECT * from CLIENTES) por (SELECT * FROM proveedores) en función de la
> propiedad cargo.
>
> El código es este, y se llama desde el formulario principal de la
> aplicación.
>
> //---------------------------------------------------------
>
> METHOD CargaProveedores( oSender, oMenu ) CLASS FrmPrincipal
> LOCAL oForm:=FrmClientes():CreateForm(Self)
>
> WITH OBJECT oForm
> :Cargo:="Proveedores"
> :cText:="Listado de proveedores"
> :Show()
> END WITH
>
> RETURN Nil
> //----------------------------------------------------------
>
> Cuando ejecuto la aplicación, no da errores ni warnings, pero al crear el
> formulario, las propiedades que le asigne antes de :Show() no se asignan.
> ¿Es problema del tipo de variable (LOCAL) usada?
Prueba con:
LOCAL oForm:=FrmClientes()
WITH OBJECT oForm
:Cargo:="Proveedores"
:cText:="Listado de proveedores"
:New( Self )
:Create()
:Show()
END WITH
Saludos
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Ángel Fernández" <angel@agelso.com> escribió en el mensaje
news:[email=4732e04c@ozsrv2.ozlan.local...]4732e04c@ozsrv2.ozlan.local...[/email]
> Os comento el problema que me sucede. Tengo un formulario llamado
> clientes, y un par de tablas en la base de datos(clientes,proveedores).
> Ambas tablas son exactamente iguales, lo unico que cambia entre ellas es
> el nombre.
> Entonces, me interesaría utilizar el mismo formulario para ambas tablas y
> se me había ocurrido modificar la propiedad 'cargo' del formulario
> clientes, y añardirle "clientes" o "proveedores" en función desde donde se
> llame, y a partir de ahí, cambiar la consulta SQL a la base de datos
> (SELECT * from CLIENTES) por (SELECT * FROM proveedores) en función de la
> propiedad cargo.
>
> El código es este, y se llama desde el formulario principal de la
> aplicación.
>
> //---------------------------------------------------------
>
> METHOD CargaProveedores( oSender, oMenu ) CLASS FrmPrincipal
> LOCAL oForm:=FrmClientes():CreateForm(Self)
>
> WITH OBJECT oForm
> :Cargo:="Proveedores"
> :cText:="Listado de proveedores"
> :Show()
> END WITH
>
> RETURN Nil
> //----------------------------------------------------------
>
> Cuando ejecuto la aplicación, no da errores ni warnings, pero al crear el
> formulario, las propiedades que le asigne antes de :Show() no se asignan.
> ¿Es problema del tipo de variable (LOCAL) usada?
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Modificar propiedades de un formulario
Ignacio Ortiz de Zúñiga escribió:
> Angel,
>
> Prueba con:
>
> LOCAL oForm:=FrmClientes()
>
> WITH OBJECT oForm
> :Cargo:="Proveedores"
> :cText:="Listado de proveedores"
> :New( Self )
> :Create()
> :Show()
> END WITH
>
> Saludos
>
Lo acabo de probar y no establece las propiedades asignadas. Estuve
investigando también con los metodos New() y Create(), pero consigo
siempre el mismo resultado. La única solución que he encontrado es
asignar "Proveedores" a la propiedad Cargo del formulario principal, e
ir asignando progresivamente esa misma propiedad a los sucesivos
formularios que se vayan abriendo. (Consta de la típica ventana
principal, listado de clientes/proveedores y una ventana para la edición
de los mismos).
La variable (oForm)al ser local, se que se "destruye" una vez se sale
del metodo del que se llama, pero pensé que al hacer 'referencia' al
formulario en sí (oForm:=FrmClientes()), se mantendrían las propiedades
que se le asignaran. ¿Sabeis porqué sucede este "extraño" comportamiento?
> Angel,
>
> Prueba con:
>
> LOCAL oForm:=FrmClientes()
>
> WITH OBJECT oForm
> :Cargo:="Proveedores"
> :cText:="Listado de proveedores"
> :New( Self )
> :Create()
> :Show()
> END WITH
>
> Saludos
>
Lo acabo de probar y no establece las propiedades asignadas. Estuve
investigando también con los metodos New() y Create(), pero consigo
siempre el mismo resultado. La única solución que he encontrado es
asignar "Proveedores" a la propiedad Cargo del formulario principal, e
ir asignando progresivamente esa misma propiedad a los sucesivos
formularios que se vayan abriendo. (Consta de la típica ventana
principal, listado de clientes/proveedores y una ventana para la edición
de los mismos).
La variable (oForm)al ser local, se que se "destruye" una vez se sale
del metodo del que se llama, pero pensé que al hacer 'referencia' al
formulario en sí (oForm:=FrmClientes()), se mantendrían las propiedades
que se le asignaran. ¿Sabeis porqué sucede este "extraño" comportamiento?
- ignacio
- Site Admin
- Mensajes: 9459
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Modificar propiedades de un formulario
Angel,
Será mejor que mande un pequeño ejemplo de lo que desea hacer.
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Ángel Fernández" <angel@agelso.com> escribió en el mensaje
news:[email=47330ad2@ozsrv2.ozlan.local...]47330ad2@ozsrv2.ozlan.local...[/email]
> Ignacio Ortiz de Zúñiga escribió:
>> Angel,
>>
>> Prueba con:
>>
>> LOCAL oForm:=FrmClientes()
>>
>> WITH OBJECT oForm
>> :Cargo:="Proveedores"
>> :cText:="Listado de proveedores"
>> :New( Self )
>> :Create()
>> :Show()
>> END WITH
>>
>> Saludos
>>
>
> Lo acabo de probar y no establece las propiedades asignadas. Estuve
> investigando también con los metodos New() y Create(), pero consigo
> siempre el mismo resultado. La única solución que he encontrado es asignar
> "Proveedores" a la propiedad Cargo del formulario principal, e ir
> asignando progresivamente esa misma propiedad a los sucesivos formularios
> que se vayan abriendo. (Consta de la típica ventana principal, listado de
> clientes/proveedores y una ventana para la edición de los mismos).
>
> La variable (oForm)al ser local, se que se "destruye" una vez se sale del
> metodo del que se llama, pero pensé que al hacer 'referencia' al
> formulario en sí (oForm:=FrmClientes()), se mantendrían las propiedades
> que se le asignaran. ¿Sabeis porqué sucede este "extraño" comportamiento?
Será mejor que mande un pequeño ejemplo de lo que desea hacer.
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Ángel Fernández" <angel@agelso.com> escribió en el mensaje
news:[email=47330ad2@ozsrv2.ozlan.local...]47330ad2@ozsrv2.ozlan.local...[/email]
> Ignacio Ortiz de Zúñiga escribió:
>> Angel,
>>
>> Prueba con:
>>
>> LOCAL oForm:=FrmClientes()
>>
>> WITH OBJECT oForm
>> :Cargo:="Proveedores"
>> :cText:="Listado de proveedores"
>> :New( Self )
>> :Create()
>> :Show()
>> END WITH
>>
>> Saludos
>>
>
> Lo acabo de probar y no establece las propiedades asignadas. Estuve
> investigando también con los metodos New() y Create(), pero consigo
> siempre el mismo resultado. La única solución que he encontrado es asignar
> "Proveedores" a la propiedad Cargo del formulario principal, e ir
> asignando progresivamente esa misma propiedad a los sucesivos formularios
> que se vayan abriendo. (Consta de la típica ventana principal, listado de
> clientes/proveedores y una ventana para la edición de los mismos).
>
> La variable (oForm)al ser local, se que se "destruye" una vez se sale del
> metodo del que se llama, pero pensé que al hacer 'referencia' al
> formulario en sí (oForm:=FrmClientes()), se mantendrían las propiedades
> que se le asignaran. ¿Sabeis porqué sucede este "extraño" comportamiento?
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
-
- Mensajes: 558
- Registrado: Mar Feb 09, 2010 2:26 pm
Modificar propiedades de un formulario
Angel:
A modo de sugerencia y por si tiene algo que ver oFrom es una palabra
reservada dentro del lenguaje.
TControl:oForm
Objeto TForm contenedor del control.
ímbito:
Sólo lectura
Tipo:
Objeto
Valor inicial:
Nil
Descripción:
Esta propiedad devuelve el objeto tipo TForm contenedor del control.
El objeto oForm no tiene porque ser necesariamente igual al objeto
oParent. El objeto oParent apunta al objeto contenedor, pero este puede
ser cualquier tipo de control descendiente de TWinControl, como por
ejemplo un TFolder, sin embargo el objeto oForm siempre apunta al
Formulario que contiene el control.
Y además una sugerencia porque no empleas una DATA dentro del formulario
llamado así:
DATA nQuienLlama
METHOD FormShow( oSender ) CLASS TFormDesignadas
Do Case
Case ::nQuienLlama == 1
queremos utilizar clientes
Case ::nQuienLlama == 2
Queremos utilizar provedores
End Do
RETURN Nil
Luego desde donde lo llamas solo tendrías que poner
METHOD DesignadasBtnClick( oSender, Value ) CLASS TFormIndiv
*
WITH OBJECT TFormDesignadas():New( ::oForm )
** Si quien llama lo hace desde un formualrio distinto
** del de datos comunes debe ser nQuienLlama := 3
:nQuienLlama := 3
:ShowModal()
IF :nModalResult == mrOK
*
::oDesignacio:Value := :DSeleccionado
*
ENDIF
:END()
END WITH
*
RETURN Nil
Espero te sirva
José Ramón Castro.
íngel Fernández escribió:
> Os comento el problema que me sucede. Tengo un formulario llamado
> clientes, y un par de tablas en la base de datos(clientes,proveedores).
> Ambas tablas son exactamente iguales, lo unico que cambia entre ellas es
> el nombre.
> Entonces, me interesaría utilizar el mismo formulario para ambas tablas
> y se me había ocurrido modificar la propiedad 'cargo' del formulario
> clientes, y añardirle "clientes" o "proveedores" en función desde donde
> se llame, y a partir de ahí, cambiar la consulta SQL a la base de datos
> (SELECT * from CLIENTES) por (SELECT * FROM proveedores) en función de
> la propiedad cargo.
>
> El código es este, y se llama desde el formulario principal de la
> aplicación.
>
> //---------------------------------------------------------
>
> METHOD CargaProveedores( oSender, oMenu ) CLASS FrmPrincipal
> LOCAL oForm:=FrmClientes():CreateForm(Self)
>
> WITH OBJECT oForm
> :Cargo:="Proveedores"
> :cText:="Listado de proveedores"
> :Show()
> END WITH
>
> RETURN Nil
> //----------------------------------------------------------
>
> Cuando ejecuto la aplicación, no da errores ni warnings, pero al crear
> el formulario, las propiedades que le asigne antes de :Show() no se
> asignan. ¿Es problema del tipo de variable (LOCAL) usada?
A modo de sugerencia y por si tiene algo que ver oFrom es una palabra
reservada dentro del lenguaje.
TControl:oForm
Objeto TForm contenedor del control.
ímbito:
Sólo lectura
Tipo:
Objeto
Valor inicial:
Nil
Descripción:
Esta propiedad devuelve el objeto tipo TForm contenedor del control.
El objeto oForm no tiene porque ser necesariamente igual al objeto
oParent. El objeto oParent apunta al objeto contenedor, pero este puede
ser cualquier tipo de control descendiente de TWinControl, como por
ejemplo un TFolder, sin embargo el objeto oForm siempre apunta al
Formulario que contiene el control.
Y además una sugerencia porque no empleas una DATA dentro del formulario
llamado así:
DATA nQuienLlama
METHOD FormShow( oSender ) CLASS TFormDesignadas
Do Case
Case ::nQuienLlama == 1
queremos utilizar clientes
Case ::nQuienLlama == 2
Queremos utilizar provedores
End Do
RETURN Nil
Luego desde donde lo llamas solo tendrías que poner
METHOD DesignadasBtnClick( oSender, Value ) CLASS TFormIndiv
*
WITH OBJECT TFormDesignadas():New( ::oForm )
** Si quien llama lo hace desde un formualrio distinto
** del de datos comunes debe ser nQuienLlama := 3
:nQuienLlama := 3
:ShowModal()
IF :nModalResult == mrOK
*
::oDesignacio:Value := :DSeleccionado
*
ENDIF
:END()
END WITH
*
RETURN Nil
Espero te sirva
José Ramón Castro.
íngel Fernández escribió:
> Os comento el problema que me sucede. Tengo un formulario llamado
> clientes, y un par de tablas en la base de datos(clientes,proveedores).
> Ambas tablas son exactamente iguales, lo unico que cambia entre ellas es
> el nombre.
> Entonces, me interesaría utilizar el mismo formulario para ambas tablas
> y se me había ocurrido modificar la propiedad 'cargo' del formulario
> clientes, y añardirle "clientes" o "proveedores" en función desde donde
> se llame, y a partir de ahí, cambiar la consulta SQL a la base de datos
> (SELECT * from CLIENTES) por (SELECT * FROM proveedores) en función de
> la propiedad cargo.
>
> El código es este, y se llama desde el formulario principal de la
> aplicación.
>
> //---------------------------------------------------------
>
> METHOD CargaProveedores( oSender, oMenu ) CLASS FrmPrincipal
> LOCAL oForm:=FrmClientes():CreateForm(Self)
>
> WITH OBJECT oForm
> :Cargo:="Proveedores"
> :cText:="Listado de proveedores"
> :Show()
> END WITH
>
> RETURN Nil
> //----------------------------------------------------------
>
> Cuando ejecuto la aplicación, no da errores ni warnings, pero al crear
> el formulario, las propiedades que le asigne antes de :Show() no se
> asignan. ¿Es problema del tipo de variable (LOCAL) usada?