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

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

Postby Hernan Diego Ceccarelli » Thu Jan 14, 2010 3:58 pm

#define GWL_STYLE -16


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

Code: Select all  Expand view

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

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
 
User avatar
Hernan Diego Ceccarelli
 
Posts: 84
Joined: Fri Oct 07, 2005 4:51 pm
Location: Rosario - Santa Fe - Argentina

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

Postby Antonio Linares » Thu Jan 14, 2010 11:16 pm

Hola Hernán! Que bueno de volver a verte y saludarte,

gracias! :-)
regards, saludos

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

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

Postby mmercado » Fri Jan 15, 2010 2:35 am

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.
manuelmercado at prodigy dot net dot mx
User avatar
mmercado
 
Posts: 782
Joined: Wed Dec 19, 2007 7:50 am
Location: Salamanca, Gto., México

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

Postby Hernan Diego Ceccarelli » Fri Jan 15, 2010 7:02 pm

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
User avatar
Hernan Diego Ceccarelli
 
Posts: 84
Joined: Fri Oct 07, 2005 4:51 pm
Location: Rosario - Santa Fe - Argentina

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

Postby jose_murugosa » Fri Jan 15, 2010 11:10 pm

Saludos Hernán,

Es un gusto verte por el foro nuevamente :D
Saludos/Regards,
José Murugosa
FWH + Harbour + Bcc7. Una seda!
User avatar
jose_murugosa
 
Posts: 1144
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

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

Postby Alfredo Arteaga » Fri Jan 15, 2010 11:15 pm

De igual manera te expreso mi aprecio Hernan.

Un Abrazo.
User avatar
Alfredo Arteaga
 
Posts: 326
Joined: Sun Oct 09, 2005 5:22 pm
Location: Mexico

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

Postby Francisco Horta » Sat Jan 16, 2010 3:57 am

un gusto tenerte por aca de nuevo master
saludos
paco
____________________
Paco
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

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

Postby mantonio_08 » Sat Jan 16, 2010 3:14 pm

saludos hernan::

algun ejemplo simple de como aplicar la funcion..

GRACIAS
mantonio_08
 
Posts: 330
Joined: Fri May 25, 2007 9:06 pm

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

Postby Hernan Diego Ceccarelli » Mon Jan 25, 2010 2:49 pm

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
User avatar
Hernan Diego Ceccarelli
 
Posts: 84
Joined: Fri Oct 07, 2005 4:51 pm
Location: Rosario - Santa Fe - Argentina

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

Postby Patricio Avalos Aguirre » Mon Jan 25, 2010 3:59 pm

Muchas gracias por el aporte...

ahora se ve mas interesante
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
User avatar
Patricio Avalos Aguirre
 
Posts: 1059
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile

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

Postby sjingo » Tue Jan 26, 2010 12:55 am

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
Marcelo Jingo
User avatar
sjingo
 
Posts: 229
Joined: Sat Mar 18, 2006 3:42 pm
Location: Ibarra-Ecuador

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

Postby Marcelo Via Giglio » Tue Jan 26, 2010 2:20 am

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 Via Giglio
 
Posts: 1050
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

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

Postby Hernan Diego Ceccarelli » Tue Jan 26, 2010 3:27 pm

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.
User avatar
Hernan Diego Ceccarelli
 
Posts: 84
Joined: Fri Oct 07, 2005 4:51 pm
Location: Rosario - Santa Fe - Argentina

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

Postby Marcelo Via Giglio » Wed Jan 27, 2010 3:46 pm

Hernan,

gracias por la respuesta, con razon :D

saludos

Marcelo
Marcelo Via Giglio
 
Posts: 1050
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 39 guests