Página 1 de 1

Cmo agregar una nueva propiedad a un control Edit?

Publicado: Mar Mar 10, 2009 11:34 pm
por Carlos Ortiz
Estoy tratando de agregar una nueva propiedad a la clase Tedit para que los
Edit obligatorios de toda la aplicación aparezcan con un color de fondo
distinto a los Edit no obligatorios, he probado varias cosas reescribiendo
la clase TEdit y no doy en el clavo. Alguna sugerencia.
Muchas gracias.

Cmo agregar una nueva propiedad a un control Edit?

Publicado: Mar Mar 10, 2009 11:59 pm
por notengo
Carlos,
> Estoy tratando de agregar una nueva propiedad a la clase Tedit para que los
> Edit obligatorios de toda la aplicación aparezcan con un color de fondo
> distinto a los Edit no obligatorios, he probado varias cosas reescribiendo
> la clase TEdit y no doy en el clavo. Alguna sugerencia.
Añade este código a uno de tus PRGs (lo he escrito mirando el código de
TEdit pero no lo he probado):
CLASS TEdit FROM XEdit
PUBLISHED:
PROPERTY nClrObligatorio INIT -1 WRITE INLINE ::SetClrOblig( Value )
EDITOR PE_Color
PUBLIC:
PROPERTY oBrushObligatorio
METHOD Free()
METHOD GetCtlColor( hDC )
METHOD SetClrOblig( nClr )
ENDCLASS
METHOD Free() CLASS TEdit
IF ::oBrushObligatorio != Nil
::oBrushObligatorio:Destroy()
::oBrushObligatorio := Nil
ENDIF
RETURN Super:Free()
METHOD GetCtlColor( hDC ) CLASS TEdit
IF ::nClrObligatorio != -1
SetBkColor( hDC, ::nClrObligatorio )
RETURN ::oBrushObligatorio:Handle
ENDIF
RETURN Super:GetCtlColor( hDC )
METHOD SetClrOblig( nClr ) CLASS TEdit
IF ::oBrushObligatorio != Nil
::oBrushObligatorio:End()
::oBrushObligatorio := Nil
ENDIF
UPDATE ::FnClrObligatorio TO nClr
IF ::nClrObligatorio != -1
::oBrushObligatorio := TBrush():Create( Nil, ::nClrObligatorio )
ENDIF
::Refresh()
RETURN Nil
Aunque funcione correctamente, creo que lo mejor serí­a que crearas un
componente externo para ponerlo en la paleta de componentes y que puedas
cambiar sus propiedades en tiempo de diseño.
Saludos,
José Lalí­n

Cmo agregar una nueva propiedad a un control Edit?

Publicado: Mié Mar 11, 2009 4:08 am
por Carlos Ortiz
Muchas gracias José, siempre tan atento.
Pregunta: eso de crear un componente no esta disponible en mi version de
xailer creo (1.98).

Cmo agregar una nueva propiedad a un control Edit?

Publicado: Mié Mar 11, 2009 3:34 pm
por notengo
Carlos,
> Muchas gracias José, siempre tan atento.
Un placer.
> Pregunta: eso de crear un componente no esta disponible en mi version de
> xailer creo (1.98).
Está disponible de la 2.0 en adelante.
Saludos,
José Lalí­n

Cmo agregar una nueva propiedad a un control Edit?

Publicado: Mié Mar 11, 2009 6:39 pm
por Carlos Ortiz
Gracias Jose pero realmente no es lo que busco, me parece que es mas simple,
por ejemplo poder hacer esto desde un formulario:
::oEdit1:lObligatorio:=.T.
y que cuando se visualice el control se vea con otro color en nClrPane,
seria algo similar a cuando por ejemplo hacemos ::oEdit1:cText:="PEREZ JOSE"
Muchas gracias, espero sugerencias.

Cmo agregar una nueva propiedad a un control Edit?

Publicado: Mié Mar 11, 2009 10:17 pm
por notengo
Carlos,
a ver si ahora te he entendido bien :-)
CLASS TEdit FROM XEdit
PUBLISHED:
PROPERTY lObligatorio INIT .F. WRITE METHOD SetOblig
PUBLIC:
METHOD SetOblig
ENDCLASS
METHOD SetOblig( Value ) CLASS TEdit
::FlObligatorio := Value
::nClrPane := IIf( Value, clRed, clWindow )
RETURN Nil
Saludos,
José Lalí­n

Cmo agregar una nueva propiedad a un control Edit?

Publicado: Jue Mar 12, 2009 3:53 am
por Carlos Ortiz
"José Lalín" <notengo@correo.com> escribió en el mensaje
news:49b82b05$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>
> Carlos,
>
> a ver si ahora te he entendido bien :-)
>
> CLASS TEdit FROM XEdit
>
> PUBLISHED:
> PROPERTY lObligatorio INIT .F. WRITE METHOD SetOblig
>
> PUBLIC:
> METHOD SetOblig
>
> ENDCLASS
>
> METHOD SetOblig( Value ) CLASS TEdit
>
> ::FlObligatorio := Value
> ::nClrPane := IIf( Value, clRed, clWindow )
>
> RETURN Nil
>
> Saludos,
> José Lalín