Page 1 of 1

Funcion para Agregar/Remover STYLES a un control in Run-Time

Posted: Thu Jan 14, 2010 3:58 pm
by Hernan Diego Ceccarelli
#define GWL_STYLE -16


Aca les mando esta funcion, espero les sirva :) :D Es MUY util ehh :)

Code: Select all

//--------------------------------------------------------------------------------------------------//

FUNCTION ChangeStyleWindow( hoWnd, naStyle, nStyleType, lAdd )

   local aStyles:= {}, n, hWnd, nStyleReturn:= 0

   if ValType(hoWnd)$"O"
      hWnd:= hoWnd:hWnd
   else
      hWnd:= hoWnd
   endif

   if ValType(naStyle)$"N;A"
      if ValType(naStyle)$"N"
          aStyles:= { naStyle }
      else
          aStyles:= aClone( naStyle )
      endif
      aEval(aStyles, {|nStyle| nStyleReturn:= __ChangeStyleWindow( hWnd, nStyle, nStyleType, lAdd )  } )
   endif

return nStyleReturn

//--------------------------------------------------------------------------------------------------//

STATIC FUNCTION __ChangeStyleWindow( hWnd, nStyle, nStyleType, lAdd )

   local nOldStyle, lExistStyle
   local nStyleReturn:= 0

   DEFAULT nStyleType:= GWL_STYLE,;
           lAdd:= .T.

   if ValType(hWnd)$"N" .and. ValType(nStyle)$"N" .and. ValType(nStyleType)$"N" .and. ValType(lAdd)$"L"
      nOldStyle  := GetWindowLong( hWnd, nStyleType )
      lExistStyle:= lAnd( nStyle, nOldStyle )
      if lAdd .and. !lExistStyle
         SetWindowLong( hWnd, nStyleType, nOr( nOldStyle, nStyle ) )
      elseif !lAdd .and. lExistStyle
         SetWindowLong( hWnd, nStyleType, nAnd( nOldStyle, nNot(nStyle) ) )
      endif
      nStyleReturn:= GetWindowLong( hWnd, nStyleType )
   endif

RETURN nStyleReturn
 

Re: Funcion para Agregar/Remover STYLES a un control in Run-Time

Posted: Thu Jan 14, 2010 11:16 pm
by Antonio Linares
Hola Hernán! Que bueno de volver a verte y saludarte,

gracias! :-)

Re: Funcion para Agregar/Remover STYLES a un control in Run-Time

Posted: Fri Jan 15, 2010 2:35 am
by mmercado
Hola Hernán:
Hernan Diego Ceccarelli wrote:Aca les mando esta funcion, espero les sirva :) :D Es MUY util ehh :)
Que gusto tenerte nuevamente por acá, espero que nos visites con frecuencia :D .

Gracias por la función.

Un abrazo con mis mejores deseos.

Re: Funcion para Agregar/Remover STYLES a un control in Run-Time

Posted: Fri Jan 15, 2010 7:02 pm
by Hernan Diego Ceccarelli
Gente linda, extraño todo esto de los foros y a uds. :) :D Me encanta ayudar a la gente con sus problemas :D
Voy a estar muy seguido por aca.
Les mando un abrazo grande a todos :D

Re: Funcion para Agregar/Remover STYLES a un control in Run-Time

Posted: Fri Jan 15, 2010 11:10 pm
by jose_murugosa
Saludos Hernán,

Es un gusto verte por el foro nuevamente :D

Re: Funcion para Agregar/Remover STYLES a un control in Run-Time

Posted: Fri Jan 15, 2010 11:15 pm
by Alfredo Arteaga
De igual manera te expreso mi aprecio Hernan.

Un Abrazo.

Re: Funcion para Agregar/Remover STYLES a un control in Run-Time

Posted: Sat Jan 16, 2010 3:57 am
by Francisco Horta
un gusto tenerte por aca de nuevo master
saludos
paco

Re: Funcion para Agregar/Remover STYLES a un control in Run-Time

Posted: Sat Jan 16, 2010 3:14 pm
by mantonio_08
saludos hernan::

algun ejemplo simple de como aplicar la funcion..

GRACIAS

Re: Funcion para Agregar/Remover STYLES a un control in Run-Time

Posted: Mon Jan 25, 2010 2:49 pm
by Hernan Diego Ceccarelli
mantonio_08 wrote:saludos hernan::

algun ejemplo simple de como aplicar la funcion..

GRACIAS
Hola gracias a todos, pues es demasiado simple: Supongamos que tenemos un control que tenemos que QUITAR o AGREGAR EL TAB_STOP en tiempo de ejecucion, en funcion de una variable del aplicativo en cuestion.

ChangeStyleWindow( oGet, WS_TABSTOP, NIL, .T. ) // LO INCORPORA
ChangeStyleWindow( oGet, WS_TABSTOP, NIL, .F. ) // LO QUITA

Podria llamarse desde un ON CHANGE (bChange) o desde cualquier evento disparado por cualquier otro control, esto es un simple ejemplo, pero podemos manipular cualquier STYLE de window, sea define GWL_STYLE (-16) o GWL_EXSTYLE (-20)

Saludos :D
Hernan

Re: Funcion para Agregar/Remover STYLES a un control in Run-Time

Posted: Mon Jan 25, 2010 3:59 pm
by Patricio Avalos Aguirre
Muchas gracias por el aporte...

ahora se ve mas interesante

Re: Funcion para Agregar/Remover STYLES a un control in Run-Time

Posted: Tue Jan 26, 2010 12:55 am
by sjingo
Que agradable sorpresa tenerte por aquí después de tanto tiempo. Recuerdo que gracias a tu invalorable ayuda me enbarqué en FW. Bienvenido de nuevo :D

Te saluda
Marcelo Jingo

Re: Funcion para Agregar/Remover STYLES a un control in Run-Time

Posted: Tue Jan 26, 2010 2:20 am
by Marcelo Via Giglio
Hernan,

primeramente, un gusto verte por aqui y agradecer esta contribucion, esto lo estoy intentando hacer sin existo es el de cambiar la justificacion de un GET en tiempo de ejecucion, y no lo he podido hacer, tienes alguna idea??

saludos

Marcelo

Re: Funcion para Agregar/Remover STYLES a un control in Run-Time

Posted: Tue Jan 26, 2010 3:27 pm
by Hernan Diego Ceccarelli
Marcelo Via Giglio wrote:Hernan,

primeramente, un gusto verte por aqui y agradecer esta contribucion, esto lo estoy intentando hacer sin existo es el de cambiar la justificacion de un GET en tiempo de ejecucion, y no lo he podido hacer, tienes alguna idea??

saludos

Marcelo
Marcelo,
Lamentablemente NO es posible, las APIs se reservan algunos styles internos EN TIEMPO DE EJECUCION y no pueden ser cambiados a posteriori dinamicamente. Los Edit Control son un caso. :cry: Igualmente voy a investigar formas de violar dicho impedimento jejeje :D Por el momento habria que destruirlo y crearlo en tiempo de ejecucion :( con la alineacion que quieras.,


Edit Control Styles

To create an edit control using the CreateWindow or
CreateWindowEx function, specify the EDIT class, appropriate
window style constants, and a combination of the following edit
control styles. After the control has been created, these styles
cannot be modified, except as noted.


The ES_CENTER/ES_LEFT/ES_RIGHT were not noted as modifiable.

Re: Funcion para Agregar/Remover STYLES a un control in Run-Time

Posted: Wed Jan 27, 2010 3:46 pm
by Marcelo Via Giglio
Hernan,

gracias por la respuesta, con razon :D

saludos

Marcelo