Yo deseo...

Yo deseo...

Postby triumvirato » Thu Sep 02, 2010 10:06 am

Pues me gustaría contar con una cláusula, rutina, etc... al estilo WHEN en muchos controles, pero para mostrar u ocultar el objeto. Sería un "HIDEWHEN <lExp>", pues lo más común es mostrar los controles. Según el usuario, el módulo, etc. hay información que se debe o no mostrar, lo que obliga en muchos casos a duplicar código o a usar en la definición de cada control los métodos Show(), Hide(). Ahora en cada control uso un Iif( <exp>, oObj:Show(), oObj:Hide ), por ejemplo. No sé si hay algo implementado de este estilo o se pueda hacer más fácilmente...

Saludos!
triumvirato
 
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Re: Yo deseo...

Postby Antonio Linares » Fri Oct 15, 2010 7:04 am

Siempre puedes usar un AEval( oDlg:aControls, { | oControl | ... } ) para recorrer todos los controles y hacerles lo que necesites :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41205
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Yo deseo...

Postby jll-fwh » Sat Oct 30, 2010 2:40 am

Hola triumvirato:

Se hace como dice el maestro, pero para darte una ayudita te comento a groso modo:

No tienes que duplicar ningun modulo, yo desde la version 1.0 de FW, tengo las mismas funciones de siempre. yo creo una funcion con la declaracion de los objetos a utilizar, con una pequeña diferencia a ti creo, yo no uso una variable por objeto, si el procedimento en muy grande necesitarias un monton de variables y seria un lio.

Por ejemplo, si necesito 15 objetos, sean los que sean, get, say, xbrowse, etc me declaro un array de 15 elementos para los objetos ( ocampos) , un array de 15 elementos para el contenido (ccampos ), y en el caso de uitlizar combobox o otro objeto que requiera informacion adicinal, creo el array acampo, estos array como estaticos:

STATIC cCampos
STATIC oCampos
STATIC aCampos

En la funcion principal declaro el tamaño de los array:

cCampos := Array( 15 )
oCampos := Array( 15 )
aCampos := Array( 15 )

los objetos se quedarian asi:

REDEFINE GET oCampos[1] VAR cCampos[1] ID 100 OF oDlg FONT oFont PICTURE "@!" VALID Localizar()

en el ON INIT en todos los proceso tengo una funcion que se llama Inicia(), esta funcion lo que hace es inicializar cada elemento del array con el valor que corresponde.

Luego segun sean por ejemplo, altas, bajas, modificaciones, etc.

Yo tengo creadas como te he comento funciones que me activan, desactivan, refrescan, focos, etc los campos, y solo le pasas el nombre del objeto y los elementos a realizar la acccion, y con una sola linea de codigo manejas todos los obejtos, ejemplo:

Para activar:
MiActivar( @oCampos, 3, 6 )

Para Desactivar:
MiTodosDesactivar( @oCampos, 1, Len( oCampos ) )


Para refrescar:
MiDosRefresca( @oCampos, 1, Len( oCampos ) )

para poner el foco en un campo determinado:
MiFoco( @oCampos, 1 )

Para refrescar un browse/xbrowse, etc, con posicionamiento en el 1 reg, o no, segun interese:
RefrescaBRW( oGrid, .T ) o RefrescaBRW( oGrid, .F. )

En fin, para cualquier cosa que se pueden hacer con los objetos tengo funciones generales que me sirve para generar una unica linea de codigo, es decir, mis fuentes suelen ser muy pequeños, al usar este metodo.

En la declaracion de los elementos de los array, solo tienes que tener en cuenta, que con objetos tambien hay que hacerlo es, poner como comentario que es cada elemento, como comentario, el numero de elemento de cada ccampos[x] y ocampos[x] siempre corresponden al mismo objeto.

cCampos[1] // codigo
cCampos[2] // Denominacion
...etc

Para cuando haya que hacer modificaciones, saber que elemento es cada cosa, a mi este metodo me ha ido de lujo desde siempre;

Espero que este pequeño ejemplo te pueda ayudar en algo.

un saludo
JLL
Libreria: FWH/FWH1109 + Harbour 5.8.2 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
User avatar
jll-fwh
 
Posts: 408
Joined: Fri Jan 29, 2010 8:14 pm
Location: Meliana - Valencia


Return to To do - WishList / Por hacer - Peticiones

Who is online

Users browsing this forum: No registered users and 5 guests